Gennady
Гений
(60814)
16 лет назад
Доброго времени суток.
Не вдаваясь в тонкости, можно сказать, что методы классов могут быть статическими и виртуальными. Статический метод не переопределяется. Поэтому, если вы породили потомка от некоторого класса, то он унаследует статический метод родителя и при его вызове будет исполнен код, реализованный в родительском методе. Для того, чтобы в потомке можно было изменить поведение метода, его объявляют со служебным словом virtual; При этом название метода и список параметров должны в точности соответствовать названию и списку параметров родителя.
При переопределении родительcких методов используется директива override;
Что касается абстрактных методов, то в базовом типе объекта абстрактный метод не имеет определения тела (или тело содержит оператор Abstruct для перехвата неверных вызовов) . Абстрактные методы должны быть определены потомками до того, как могут быть использованы. Абстрактные методы - это всегда виртуальные методы. Пример такого метода TStream.Read.
Удачи!