Я думаю, это потому, что Person.getInfo()
является приватным , и вы не можете переопределить приватные методы, поэтому a.printPerson()
будет фактически вызывать свои собственные getInfo()
. Всегда комментируйте методы, которые вы хотите переопределить, с помощью @Override
; компилятор выдаст ошибку, если в родительском классе теперь найден метод для переопределения.
Если вы хотите сделать Person.getInfo()
закрытым для других классов, но все же хотите переопределить его, просто сделайте его protected
.