@iskateli

Для всех методов Java используется механизм позднего связывания?

Подскажите пожалуйста, вот сейчас читаю Брюс Эккель - Философия Java, написано (241 стр.) что в Java
Теперь, когда вы знаете, что связывание всех методов в Java осуществляется поли­морфно, через позднее связывание, вы можете писать код для базового класса, не
сомневаясь в том, что для всех производных классов он также будет работать верно.

В оригинале :
Once you know that all method binding in Java happens polymorphically via late binding, you can write your code to talk to the base class and know that all the derived-class cases will work correctly using the same code.

Как правильно перевести первую часть предложения? Потому что переведённая часть предложения
связывание всех методов в Java осуществляется поли­морфно, через позднее связывание

не соответствует действительности: final методы, статические методы, методы вызываемые через super используют механизм раннего связывания.
Я бы скорее всего вот так же ошибочно перевёл:
Как только вы узнаете, что все связывание методов в Java происходит полиморфно с помощью позднего связывания

Но можно вот так перевести:
Связывание всех полиморфных методов происходит с помощью позднего связывания.
что сильно меняет смысл фразы, теперь это относится не ко всем методам Java, а только к методам участвующим в полиморфизме.
Подскажите пожалуйста, что же действительно написано в оригинале.
  • Вопрос задан
  • 263 просмотра
Пригласить эксперта
Ответы на вопрос 2
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Надо понимать, что "Философия Java" - это учебник среднего уровня, поэтому Эккель либо упростил для понятности, либо написал это в контексте обсуждения, исключающем статические методы и вызовы методов суперкласса.
Ответ написан
DollyPapper
@DollyPapper
Ну всё логично. Для того кода тип которого мы можем знать заранее - раннее (статическое) связывание. Для полиморфных позднее связывание.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы