Почему выводит это, а не то что ожидаю (не понимаю по наследованию )

Рейтинг: 0Ответов: 1Опубликовано: 01.03.2015
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.

Ответы

▲ 6

Потому что приватные методы не переопределяются. (не могут быть override)