Java Base b = new Derived ();вопросы наследования - PullRequest
5 голосов
/ 28 августа 2011

Что именно происходит, когда вы создаете новый экземпляр, используя:

Base b = new Derived();

Я не могу понять механику, стоящую за этим.

Ответы [ 2 ]

4 голосов
/ 28 августа 2011

По сути, с этого момента компилятор видит экземпляр Base, а во время выполнения экземпляр имеет тип Derived.

В более широком объяснении тип Base может быть интерфейсом, поэтому по контракту вы знаете, какой метод имеет и что он делает Polymorphism. Но вы абстрагированы от реализации.

3 голосов
/ 28 августа 2011

Ссылка на b имеет тип Base. Но реализация Derived. Это означает, что вы можете использовать его как Base, но он будет вести себя как Derived. Выполнение b instanceof Derived будет истинным, поскольку реализация имеет тип Derived

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