|
Сервер
поддерживается
кафедрой информатики и
вычислительной техники ГрГУ
тел. +375-(0)152-445-101
E-mail : kadan@grsu.grodno.by
|
Перекрытие виртуальных и динамических методов
Для
перекрытия и виртуальных, и
динамических методов служит новая
директива override, с
помощью которой (и только с ней!)
можно переопределять оба этих типа
методов:
type
══TFirstClass = class
════FMyField1 : Integer;
════FMyField2 : Longint;
════procedure StatMethod;
════procedure VirtMethod1; virtual;
════procedure VirtMethod2; virtual;
════procedure DynaMethod1; dynamic;
════procedure DynaMethod2; dynamic;
══end;
══TSecondClass = class (TMyObject)
════procedure StatMethod;
════procedure VirtMethodI; override;
════procedure DynaMethodI; override;
══end;
══var
════Obj1: TFirstClass;
════Obj2: TSecondClass;
Первый из
методов в примере создается заново,
остальные два ? перекрываются.
Попытка применить override к статическому
методу вызовет ошибку компиляции.
Нужно быть внимательным: попытка
перекрытия с директивой не override, a virtual или dynamic, приведет на самом
деле к созданию нового
одноименного метода.
Более
углубленное рассмотрение таблиц вы
найдете в разделе "Информация о
типе времени выполнения (RTTI).
Указатели на класс".
Для
комментария : kadan@grsu.grodno.by
|