Я новичок в Java и изучаю ее функции наследования. Есть что -то, чего я не могу понять. Я ценю, если кто-то сможет помочь мне понять это.
Код: Выделить всё
class parent {
public int a;
public parent(int a) {
this.a = a;
}
public void getA() {
System.out.println(this.a);
String name = this.getClass().getSimpleName();
System.out.println(name);
}
}
class child extends parent {
public int a;
public child(int a) {
super(a);
this.a = a + 10;
}
}
< /code>
Вот мой основной класс: < /p>
public class main {
public static void main(String[] args) {
child c = new child(20);
c.getA();
System.out.println(c.a);
}
}
Как вы видите, переменная a внутри ребенка скрывает переменную a parent , а метод geta () объявляется внутри родителя , который печатает значение и имя класса объекта. Inside main () , я создал экземпляр класса Child и вызвал метод geta () . Я ожидал одного из двух возможных результатов. Если JVM устанавливает эту функцию в geta () для родителей , я ожидаю, что он будет печатать 20 в качестве значения переменной A и Parent в качестве имени класса. В противном случае он должен распечатать 30 и ребенка . Тем не менее, он печатает 20 как значение , которое принадлежит родителю класс и печатает Child в качестве имени класса. Почему это? Или если это указывает на класс ребенка , почему он печатает родительское значение ?
Подробнее здесь:
https://stackoverflow.com/questions/796 ... attributes