PascalABC.NET

Абстрактные методы

Методы, предназначенные для переопределения в подклассах, объявляются с ключевым словом 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;