logo
Лекции програм_new_последняя версия1

Перекрытие виртуальных и динамических методов.

Для перекрытия виртуальных и динамических методов служит новая директива override, с помощью которой и только с ней можно переопределить оба этих типа методов.

Пример 2:

Type TFirstClass=class

FMyField1:Integer;

FMyField2:LongInt;

Procedure StatMetod;

Procedure VirtMetod1; virtual;

Procedure VirtMetod2; virtual;

Procedure DynaMetod1; dynamic;

Procedure DynaMetod2; dynamic;

end;

TSecondClass=class(TFirstClass) {класс потомок}

Procedure StatMetod;

Procedure VirtMetod1; override;

{метод перекрыт}

Procedure DynaMetod1; override;

{метод перекрыт}

end;

Var Object1:TFirstClass;

Object2:TSecondClass;

Первый из методов StatMetod создается в новом классе заново {перекрывается статически}, остальные два перекрываются как виртуальный и динамический с помощью директивы override. Попытка применить директиву override к статическому методу вызовет ошибку компиляции.