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.