Az absztrakt adattípusok megvalósítására a Delphiben
osztályok segítségével van
lehetőség.
Ezeket külön unitokba tehetjük
és így elválaszthatjuk őket külön fordítási egységekbe. 
Delphiben az operátor-túlterhelés csak rekordok esetén lehetséges, és ott se a szokásos módon. Az operátor alprogramokat a class operator kulcsszavakkal deklaráljuk, valamint nem használhatjuk a műveleti jeleket függvénynévként, így ehelyett az adott operátorhoz tartozó speciálisnevet kell megadni. Az operátor függvények címe nem kérdezhető le és nem hívhatók meg közvetlenül.
A felüldefiniálható operátorok az alábbiak: (Az A típus jelenti azt a típust, amelyre az operátort definiáljuk, a B tetszőleges típus.)
| Szignatúra | A felüldefiniált művelet | 
|---|---|
| Implicit(a : A) : B; | Implicit konverzió A-ról B-re | 
| Explicit(a : A) : B; | Explicit konverzió A-ról B-re | 
| Negative(a: A) : B; | - (unáris) | 
| Positive(a: A) : B; | + (unáris) | 
| Inc(a: A) : B; | Inc | 
| Dec(a: A) : B; | Dec | 
| LogicalNot(a: A) : B; | not | 
| BitwiseNot(a: A) : B; | not | 
| Trunc(a: A) : B; | Trunc | 
| Round(a: A) : B; | Round | 
| Equal(a: A; b: A) : Boolean; | = | 
| NotEqual(a: A; b: A) : Boolean; | <> | 
| GreaterThan(a: A; b: A) : Boolean; | > | 
| GreaterThanOrEqual(a: A; b: A) : Boolean; | >= | 
| LessThan(a: A; b: A) : Boolean; | < | 
| LessThanOrEqual(a: A; b: A) : Boolean; | <= | 
| Add(a: A; b: A): B; | + | 
| Subtract(a: A; b: A): B; | - | 
| Multiply(a: A; b: A): B; | * | 
| Divide(a: A; b: A): B; | / | 
| IntDivide(a: A; b: A): B; | div | 
| Modulus(a: A; b: A): B; | mod | 
| LeftShift(a: A; b: A): B; | shl | 
| RightShift(a: A; b: A): B; | shr | 
| LogicalAnd(a: A; b: A): B; | and | 
| LogicalOr(a: A; b: A): B; | or | 
| LogicalXor(a: A; b: A): B; | xor | 
| BitwiseAnd(a: A; b: A): B; | and | 
| BitwiseOr(a: A; b: A): B; | or | 
| BitwiseXor(a: A; b: A): B; | xor | 
Példa:
Részletek: Unitok kinézete és Az adatrejtés elve