В Java, если вызывается метод, НЕ унаследованный каким-либо подклассом, используется ли динамическое или статическое связывание? - PullRequest
1 голос
/ 14 октября 2011

В java, если вызывается метод, НЕ унаследованный каким-либо подклассом, используется ли динамическое или статическое связывание?

Я знаю, что это не будет иметь никакого значения для вывода в данном конкретном случае, но просто хотел знать это.

Ответы [ 3 ]

2 голосов
/ 14 октября 2011

Если класс или метод не помечены final, они могут быть переопределены новыми типами, введенными во время выполнения загрузчиком классов.В этом смысле они все еще «динамичны».

1 голос
/ 14 октября 2011

Во время выполнения JVM знает все загруженные классы и переопределен ли метод;модификатор final для методов не имеет значения для JVM.

С этим знанием JVM оптимизирует вызовы методов, которые не переопределяются;в этом смысле привязка является «статической».

0 голосов
/ 14 октября 2011

В вызовах методов экземпляра в Java всегда используется динамическое связывание.Статические методы и прямой доступ к закрытым членам используют статическое связывание.

Длина: http://geekexplains.blogspot.com/2008/06/dynamic-binding-vs-static-binding-in.html

Эта статья объясняет это довольно хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...