Автор: Mark
Если метод в классе предка объявлен как виртуальный (virtual) или
динамический (dynamic), вам необходимо перекрыть его во всех
классах-наследниках. Если вы объявляете наследованный метод виртуальным или
динамическим, вы начинаете строить его новое виртуальное/динамическое дерево
наследования. Допустим, у нас есть следующая иерархия: A (родитель) - B - C - D.
Если вы объявляете метод как виртуальный (или динамический) в A, перекрываете в
B, создаете виртуальным в C и перекрываете в D, вот что получается:
фактический класс, используемый класс, использующий
класс для доступа к методу метод
-----------+---------------------+--------------------
D D D
D C D
D B B
D A B
C C C
C B B
C A B
B B B
B A B
Вывод: работа
виртуального/динамического наследования прекращается в момент создания
одноименного виртуального/динамического метода наследниками класса.
|