метод будет вызван?
Готовлюсь к собесам и каждый раз путаница. Вроде джава в процессе выполнения решает по типу объекта какой метод вызывать, но помню чётко примеры даже делал где по ссылке начинается определение... и ещё там права на метод смотрятся
Я даже не представляю, из каких вариантов можно запутаться. Какой метод определен в объекте, такой и будет вызван, вне зависимости от класса переменной или вида свзявания. Там есть еще небольшая приколюха со статическими методами, когда они вызываются на объекте класса. Их нельзя наследовать и переопределять, и насколько я помню, джава пытается вычислить класс во время компиляции и сделает статическое связывание на определенный класс, вне зависимости от класса объекта в итоге. Но как бы статические методы и переопределять нельзя, поэтому все равно особо не роляет, и получать какое-то неожиданное поведение вроде как невозможно. А так, если компания не пишет очередную реализацию JVM или хотя бы не занимается активно модификацией байткода в своем проекте, то уходи с собеса. Это не особо полезные академические знания в обычном промышленном программировании, и нужны прям в очень специфичных кейсах. Если человек это спрашивает без причины, то он просто понятия не имеет, о чем с тобой говорить на собесе.
Ну может еще jetBrains могут такое спрашивать, т.к. пишут много различных либ и им важно, чтобы человек понимал, как устроено jvm, ну просто на всякий случай, чтобы случайно не написать фигню. Но я б тогда по jmm гонял бы, а не про диспечеризацию, конечно
Есть целые задания на тему какой метод будет вызван и я писал их, просто за год забыл и задание потерял...
Если на собесе такое спросят, скажи, что дебагером выяснишь
там же просто проход по дереву иерархии сверху вниз
Сорян, для джавый такого не видел. Для плюсов или динамческих языков есть такие приколы, а в джаве все супер просто
Найду, покажу ... Посмотрим как просто
Обсуждают сегодня