Почему выводит это, а не то что ожидаю (не понимаю по наследованию )
public class Test {
public static void main(String[] args) {
new Person().printPerson();
new Student().printPerson();
}
}
class Student extends Person {
private String getInfo() {
return "Student";
}
}
class Person {
private String getInfo() {
return "Person";
}
public void printPerson() {
System.out.println(getInfo());
}
}
Выводит
Person
Person
Я не понимаю, почему второе слово не Student. Похоже, что-нибудь связанное с динамическим связыванием (подпункт про это xD).
Мои рассуждения (по второму объекту):
Мы создаем объект класса Student и выполняем метод printPerson(). Данный метод printPerson() унаследован с класса Person. Унаследованный метод printPerson() в классе Student вызывает метод getInfo() из класса Student (?на самом деле почему-то из класса Person). Метод getInfo() из класса должен возвратить "Student", и соответственно должно отобразиться Student.
Источник: Stack Overflow на русском