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