По умолчанию, методы являются статическими. Пример описания:
Type TFigure = class procedure Draw; end; TRectangle = class(TFigure) procedure Draw; end; |
При обращении к статическому методу компилятору (то есть уже на этапе компиляции) известен класс, которому данный метод принадлежит. Следовательно, при помощи статических методов невозможно реализовать принцип полиморфизма. Пусть, например, имеется некоторая процедура, которая принимает в качестве параметра и базовый класс и классы-потомки. В качестве примера рассмотрим SetVisible. Класс объекта, к которому применяется эта процедура, становится известен этапе выполнения. И хотелось, чтобы и метод Draw был не базового класса, в котором описана процедура SetVisible, а каждый раз своего класса. Иначе рисовка фигурки не будет корректной. В этом случае метод Draw должен быть перекрыт в потомках.