У меня есть следующий образец кода, объясняющий образец концепции полиморфизма - Переопределение
class Super { public int number = 1; public char superText='a'; public String getColor() { return "red"; } } class Sub extends Super { public int number = 2; public char subText='b'; public String getColor() { return "blue"; } } public class Sample2 { public static void main(String[] args) { Super supersub = new Sub(); System.out.println( supersub.getColor() + supersub.number + supersub.superText ); } }
Выход синий1.
Вопрос 1:
Метод в производном классе getColor () переопределяется, и отображается поле суперкласса.
Может ли кто-нибудь объяснить, почему числовое поле в производном классе не вызывается? т.е. вывод синий2
Вопрос 2: * ОТНОСИТЕЛЬНО РАСПРЕДЕЛЕНИЯ ПАМЯТИ *
for below object instantiation,
Sub subobj = new Sub();Memory for field 'number' is allocated in heap and the address of the Number variable is assigned to object reference, subobj.
consider below case,
Super supersub = new Sub();
(a) Здесь создается память для переменных, 'number and subText' в производном классе 'Sub', а адрес переменных помещается в supersub Object
когда я обращаюсь к supersub.subText, я получил ошибку, что subText не может быть разрешен.
ТАК, ПОЖАЛУЙСТА, ОБЪЯСНИТЕ ТОЧК (a), описанный выше, т.е. распределение памяти для переменных производного класса
Спасибо, Киборгз