Абстрактные методы
Методы, предназначенные для переопределения в подклассах,
объявляются с ключевым словом abstract
и называются абстрактными. Данные методы являются
виртуальными,
но ключевое слово virtual
использовать не нужно. Например:
type Shape = class
private
x,y: integer;
public
constructor Create(xx,yy: integer);
begin
x := xx;
y := yy;
end;
procedure Draw; abstract;
end;
Классы, содержащие абстрактные методы, также называются абстрактными. Экземпляры этих классов создавать нельзя.
Классы с абстрактными методами используются как "полуфабрикаты" для создания других классов. Например:
type
Point = class(Shape)
public
procedure Draw; override;
begin
PitPixel(x,y,Color.Black);
end;
end;
Использование override
при переопределении абстрактных методов обязательно, поскольку
абстрактные методы являются разновидностью виртуальных.
Класс можно явно объявить абстрактным, используя ключевое слово
abstract
. Обычно абстрактные классы содержат абстрактные
методы, но необязательно:
type
A = abstract class(Shape)
end;