З уміння об’єктів успадковувати випливають нові правила присвоювання для змінних типу «об’єкт» (екземплярів). Їм можна присвоювати не тільки значення цього ж типу, але й будь-якого похідного від них. Аналогічне правило сумісності типів діє при передачі в процедуру чи функцію параметрів типу «об’єкт». Наприклад, якщо у програмі оголошені змінні типу «об’єкт»
VAR
St:Tstudent;
St1:Tstudent1;
то для копіювання значення, записаного у змінній St1, у змінну St2 достатньо виконати присвоювання
St:=St1;
Подібна операція заповнить поля даних у St значеннями аналогічних полів, успадкованих St1 (тобто полів Name, Date, Rate). Методи таким способом не присвоюються. Оскільки похідний тип завжди має не менше полів даних, ніж прабатьківський, операція можлива саме у такий спосіб:
Прабатько:=Спадкоємець;
При цьому гарантується заповнення всіх полів змінної, що стоїть зліва. Інакше виникла б невизначеність із «зайвими» полями, присутніми у правій змінній. Щоб уникнути такої невизначеності, забороно ставити «породжений» тип зліва від прабатьківського.
Змінні типу «об’єкт» можуть бути динамічними, тобто оголошуватися як вказівники.
VAR
Dyn_St: ^TStudent;
Dyn_St1: ^TStudent1;
Після створення динамічних об’єктів процедурою чи функцією New вказівники (як розіменовані, так і самі по собі) можуть присвоюватися один одному. Правила сумісності залишаються тими ж: коректними будуть лише присвоювання вказівників на спадкоємців вказівникам на прабатьків.
Dyn_St:= Dyn_St1;
Dyn_St^:= Dyn_St1^;
Подібні правила діють і по відношенню до формальних-фактичних параметрів: формальний параметр даного об’єктного типу може приймати в якості фактичного параметра об’єкт свого ж типу чи об’єкти всіх дочірніх типів. Якщо визначити заголовок процедури так:
Procedure Show_Fields(Obj:TStudent);
то допустимими типами фактичних параметрів можуть бути TStudent i TStudent1.
А в такому випадку
Procedure Show_Fields(Obj:TStudent1);
допустимий тип фактичних параметрів лише TStudent1.