Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  4 826

•  TDictionary Custom Sort  6 821

•  Fast Watermark Sources  6 600

•  3D Designer  9 562

•  Sik Screen Capture  6 941

•  Patch Maker  7 389

•  Айболит (remote control)  7 335

•  ListBox Drag & Drop  6 193

•  Доска для игры Реверси  98 180

•  Графические эффекты  7 506

•  Рисование по маске  6 792

•  Перетаскивание изображений  5 647

•  Canvas Drawing  6 026

•  Рисование Луны  5 818

•  Поворот изображения  5 268

•  Рисование стержней  3 861

•  Paint on Shape  3 017

•  Генератор кроссвордов  3 973

•  Головоломка Paletto  3 150

•  Теорема Монжа об окружностях  3 986

•  Пазл Numbrix  2 633

•  Заборы и коммивояжеры  3 444

•  Игра HIP  2 360

•  Игра Go (Го)  2 278

•  Симулятор лифта  2 676

•  Программа укладки плитки  2 236

•  Генератор лабиринта  2 791

•  Проверка числового ввода  2 396

•  HEX View  2 732

•  Физический маятник  2 424

 
скрыть

Delphi Sources

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



Автор: 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

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