Вход на сайт
Резюме для программиста
89957 просмотров
Перейти к просмотру всей ветки
в ответ alex445 20.09.21 09:14, Последний раз изменено 20.09.21 10:44 (alex445)
Пятый и шестой вызовы объясняются так.
bc
is of typeBaseClass
, and its value is of typeBaseClass
.dc
is of typeDerivedClass
, and its value is of typeDerivedClass
.bcdc
is of typeBaseClass
, and its value is of typeDerivedClass
.
new заставляет использовать член призводного класса, даже если доступен член базового класса. ВСЕГДА. Т.е. и когда используем производный класс в переменной производного типа, и когда используем производный класс в переменной базового типа.
override ТОЖЕ заставляет использовать член производного класса, даже если доступен член базового класса, КРОМЕ СЛУЧАЯ, когда используем производный класс в переменной базового типа. Тогда будет использован член базового класса.
7 и 8 вызовы эквивалентны 3 и 4.
Base - Method1
Base - Method2
Derived - Method1
Derived - Method2
Derived - Method1
Base - Method2
Derived - Method1
Derived - Method2