Какой будет результат компиляции и выполнения кода?

Решил освежить теоретические знания и возникли проблемы с понимаем принципов переопределения методов. Почему в данном случае вызывается метод родительского класса? Переопределение ведь должно сработать ведь модификатор доступа расширяется?

Скриншот вопроса в тесте

введите сюда описание изображения


Ответы (3 шт):

Автор решения: Сергей Бувака

Тут задачка по всей видимости на внимательность.

У вас в Parent-е есть метод whoAreYou, он приватный. Соответственно раз вы объявили переменную p как Parent у вас и вызывается родительский метод. Если его сделать публичным, то ваш ответ будет верным.

→ Ссылка
Автор решения: openman2077 error
Модификаторы доступа разные.
Соответственно не может быть @Override (переопределение)
Попробуй написать над каждый из методов @Override и среда подсветит ошибкой
→ Ссылка
Автор решения: gianlucavachhi

Переопределять методы с расширением уровня доступа возможно, но только не в случае переопределения метода с модификатором private, потому что в таком случае метод неявно помечается как final. Если вместо private подставить protected или default, то вызываться будет переопределенный метод класса Child.

→ Ссылка