VirtualProcedure. Щоб скористатися перевагами поліморфізму, її потрібно перекрити в нащадку. p align="justify"> Реалізація виглядає наступним чином:
{TAncestor}
procedure TAncestor. StaticProcedure;
begin ('Ancestor static procedure.');
end;
procedure TAncestor. VirtualProcedure;
begin ('Ancestor virtual procedure.');
end;
{TDescendant}
procedure TDescendant. StaticProcedure;
begin ('Descendant static procedure.');
end;
procedure TDescendant. VirtualProcedure;
begin ('Descendant override procedure.');
end;
Подивимося як це працює:
procedure TForm2. BitBtn1Click (Sender: TObject);
var : TAncestor;: TAncestor;
begin : = TAncestor . Create;: = TDescendant . Create;
try . StaticProcedure;. VirtualProcedure;. StaticProcedure;. VirtualProcedure;
finally . Free;. Free;
end;
end;
Зауважте, що в розділі var ми оголосили два об'єкти MyObject1 і MyObject2 типу TAncestor. А при створенні MyObject1 створили як TAncestor, а MyObject2 як TDescendant. Ось що ми побачимо при натисканні на кнопку BitBtn1:
1. Ancestor static procedure.
2. Ancestor virtual procedure.
. Ancestor static procedure.
. Descendant override procedure.
Для MyObject1 все зрозуміло, просто зголосилися зазначені процедури. А от для MyObject2 це не так. p align="j...