Metody klasowe


Metoda klasowa jest metodą (inną niż konstruktor), która operuje na klasach zamiast na obiektach. Definicja metody klasowej rozpoczyna się od słowa kluczowego class. Przykład:

type
  TFigure = class
  public
    class function Supports(Operation: string): Boolean; virtual;
    class procedure GetInfo(var Info: TFigureInfo); virtual;
    ...
  end;

Definicja metody klasowej musi również rozpoczynać się od class. Przykład:

class procedure TFigure.GetInfo(var Info: TFigureInfo);
begin
  ...
end;

W definicji metody klasowej, identyfikator Self reprezentuje klasę, w której metoda jest wywoływana (, a która może być potomkiem klasy, w której metoda jest zdefiniowana). Jeśli metoda jest wywoływana w klasie C, to Self jest typem klasy C. Dlatego nie można używać Self do dostępu do pól, właściwości i "normalnych" (obiektowych) metod, ale można używać Self w wywołaniach konstruktorów i innych metod klasowych.

Metoda klasowa może być wywoływana poprzez odwołanie do klasy lub odwołanie do obiektu. Jeśli jest wywoływana przez odwołanie do obiektu, klasa danego obiektu stanowi wartość zmiennej Self.