dynamic binding

161
15 февраля 2022, 00:10

читаю "Философию Java" Эккеля. Как-то к сожалению он сложно описывает некоторые моменты, и один из таких: Динамическое связывание.

Я хорошо понимаю на примерах где есть статическое связывание, а где динамическое. Но как именно компилятор узнаёт какой метод вызвать если действует полиморфизм?

Вот как это описал Эккель: "...Присоединение вызова метода к телу метода называеться связыванием ...Проблема решаеться благодаря позднему связыванию, тоесть связыванию проводимому во время выполнения программы, в зависимости от типа объекта..."

Вопрос: Кто-нибудь может объяснить простыми словами как компилятор определяет к какому объекту вызвать метод

Answer 1

Простые слова: компилятор это делает с помощью таблицы виртуальных методов.

https://eelcovisser.org/blog/2011/05/08/virtual-method-tables/

READ ALSO
Отсортировать Map<Event, List<Data>> по значению List.size

Отсортировать Map<Event, List<Data>> по значению List.size

я решил вопрос через создание дополнительной мапы и выглядит это жутко

119
return не действует на наследника (Java)

return не действует на наследника (Java)

Доброе время сутокЯ столкнулся с такой проблемой, что у меня есть родительский класс и его наследник

116
Как поменять шрифт кроме иконок?

Как поменять шрифт кроме иконок?

На сайте используется несколько шрифтов, нужно установить один, к примеру Montserrat, кроме иконок (на сайте так же есть inline стили, которые имеют...

152
Как выровнять блоки

Как выровнять блоки

Нужно выравнять 8 блоков в 2 колоныУ каждого блока width: 275px;

139