Top.Mail.Ru
Ответы

Delphi: объясните своими словами virtual, abstract и override

По дате
По рейтингу
Аватар пользователя
Новичок
16лет

Доброго времени суток.

Не вдаваясь в тонкости, можно сказать, что методы классов могут быть статическими и виртуальными. Статический метод не переопределяется. Поэтому, если вы породили потомка от некоторого класса, то он унаследует статический метод родителя и при его вызове будет исполнен код, реализованный в родительском методе. Для того, чтобы в потомке можно было изменить поведение метода, его объявляют со служебным словом virtual; При этом название метода и список параметров должны в точности соответствовать названию и списку параметров родителя.

При переопределении родительcких методов используется директива override;

Что касается абстрактных методов, то в базовом типе объекта абстрактный метод не имеет определения тела (или тело содержит оператор Abstruct для перехвата неверных вызовов) . Абстрактные методы должны быть определены потомками до того, как могут быть использованы. Абстрактные методы - это всегда виртуальные методы. Пример такого метода TStream.Read.

Удачи!

Аватар пользователя
Мыслитель
16лет

Сначала ты, а мы поправим, если ошибешься.