Какой будет результат компиляции и выполнения кода?
Решил освежить теоретические знания и возникли проблемы с понимаем принципов переопределения методов. Почему в данном случае вызывается метод родительского класса? Переопределение ведь должно сработать ведь модификатор доступа расширяется?
Ответы (3 шт):
Тут задачка по всей видимости на внимательность.
У вас в Parent-е есть метод whoAreYou, он приватный. Соответственно раз вы объявили переменную p как Parent у вас и вызывается родительский метод. Если его сделать публичным, то ваш ответ будет верным.
Модификаторы доступа разные.
Соответственно не может быть @Override (переопределение)
Попробуй написать над каждый из методов @Override и среда подсветит ошибкой
Переопределять методы с расширением уровня доступа возможно, но только не в случае переопределения метода с модификатором private, потому что в таком случае метод неявно помечается как final. Если вместо private подставить protected или default, то вызываться будет переопределенный метод класса Child.

