Jeśli deklaracja klasy kończy się słowem class i średnikiem, czyli jeśli ma postać:
type className = class;
bez klasy przodka i bez składników — wtedy jest to deklaracja forward. Deklaracja taka musi być rozwiązana przez zdefiniowanie deklaracji tej samej klasy wewnątrz tej samej sekcji deklaracji. Inaczej mówiąc, między deklaracją forward i jej definicją deklaracji, nie może się znaleźć nic innego niż deklaracje typów.
Deklaracja forward pozwala na wzajemną zależność klas. Przykład:
type TFigure = class; // deklaracja forward TDrawing = class Figure: TFigure; ... end; TFigure = class // definicja deklaracji Drawing: TDrawing; ... end;
Nie należy mylić deklaracji forward z z kompletną deklaracją typu potomnego klasy TObject bez deklarowania składników.
type TFirstClass = class; // to jest deklaracja forward TSecondClass = class // to jest kompletna deklaracja klasy end; // TThirdClass = class(TObject); // to jest kompletna deklaracja klasy