Typ klasy musi być zadeklarowany przed jej pierwszym użyciem (zadeklarowaniem obiektów typu tej klasy). (Nie można deklarować klasy w obrębie deklaracji zmiennej). Deklaracja typu klasy może być umieszczana wyłącznie w części opisowej programu lub modułu, lecz nigdy w procedurach lub funkcjach.
Deklaracja typu klasy ma postać:
type className = class (ancestorClass)
memberList
end;
Metody pokazane w deklaracji są nagłówkami funkcji lub procedur bez ich definicji. Definicje zamieszcza się w dalszej części programu.
Przykład: poniżej jest deklaracja klasy TListColumns z modułu ComCtrls biblioteki VCL Delphi.
type
TListColumns = class(TCollection)
private
FOwner: TCustomListView;
function GetItem(Index: Integer): TListColumn;
procedure SetItem(Index: Integer; Value: TListColumn);
protected
function GetOwner: TPersistent; override;
procedure Update(Item: TCollectionItem); override;
public
constructor Create(AOwner: TCustomListView);
function Add: TListColumn;
property Owner: TCustomListView read FOwner;
property Items[Index: Integer]: TListColumn read GetItem write SetItem; default;
end;
TListColumns pochodzi od klasy TCollection (moduł Classes), dziedzicząc większość jej składników. Jednak definiowane—lub przedefiniowywane jest kilka metod i właściwości, łącznie z konstruktorem Create. Destruktor Destroy jest dziedziczony bez zmian z klasy TCollection. Każdy składnik jest deklarowany jako private (prywatny), protected (chroniony), lub public (publiczny) (ta klasa nie ma składników published (opublikowanych)) (...).
Można teraz wykreować obiekt typu TListColumns:
var ListColumns: TListColumns; ListColumns := TListColumns.Create(SomeListView);
gdzie SomeListView jest zmienną reprezentującą obiekt klasy TCustomListView.