Sources
Delphi Russian Knowledge Base
DRKB - база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Override / Vitual / Dynamic-методы

01.01.2007
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

Вывод: работа виртуального/динамического наследования прекращается в момент создания одноименного виртуального/динамического метода наследниками класса.

Previous page:
Как явно вызвать виртуальный метод дедушки?
Top:
DRKB
Next page:
Динамические и виртуальные методы