Alternatywnie do typu klasowego, można zadeklarować typ obiektowy wg składni:
type objectTypeName = object (ancestorObjectType) memberList end;
gdzie objectTypeName jest formalnym identyfikatorem, (ancestorObjectType) jest opcjonalne, a memberList deklaruje pola, metody, i właściwości. Jeśli (ancestorObjectType) pominięto, nowy typ nie ma przodka. Typy obiektowe nie mogą mieć składników w sekcji published.
Ponieważ typy obiektowe nie pochodzą od TObject, nie udostępniają wbudowanych konstruktorów, destruktorów i innych metod. Dynamiczną zmienną typu obiektowego można wykreować używając procedury New i zniszczyć ją procedurą Dispose. Statyczne zmienne obiektowe można zadeklarować zwyczajnie - tak jak zwykłe zmienne rekordowe.
Typy obiektowe są utrzymywane dla wstecznej kompatybilności z poprzednimi wersjami Delphi. Używanie ich nie jest rekomendowane.