Спадкування

Концепція об’єктно-орієнтованого програмування передбачає можливість визначати нові класи за допомогою додавання полів, властивостей і методів до вже існуючих класів. такий механізм отримання нових класів називається породженням. При цьому но.вий, породжений клас (нащадок) успадковує властивості і методи свого базового, батьківського класу.

В оголошенні класу-нащадка вказується клас батька. Наприклад, клас TEmployee (співробітник) може бути породжений від розглянутого вище класу TPerson шляхом додавання поля FDepartment (Відділ). Оголошення класу TEmplioyee в цьому випадку може виглядати так:

TEmployee = class (TPerson) 
 
FDepartment: integer; // номер відділу 
 
constructor Create (Name: TName; Dep: integer); 
end; 

Укладена в дужки ім’я класу TPerson показує, що клас TEmployee є похідним від класу TPerson. У свою чергу, клас TPerson є базовим для класу TEmployee.

Клас TEmpioyee повинен мати свій власний конструктор, який забезпечує ініціалізацію класу-батька і своїх полів. Ось приклад реалізації конструктора класу TEmployee:

constructor TEmpioyee.Create (Name: Tname; Dep: integer); 
 begin 
 
inherited Create (Name); 
 
FDepartment: = Dep; 
end; 

У наведеному прикладі директивою inherited викликається конструктор батьківського класу. Після цього присвоюється значення полю класу-нащадка.

Після створення об’єкта похідного класу в програмі можна використовувати поля і методи батьківського класу. Нижче наведено фрагмент програми, що демонструє цю можливість.

engineer : = TEmployee.Create ( 'Сидоров', 413); 
engineer.address : = 'Ул.Блохіна, д.8, кв.10'; 

Перша інструкція створює об’єкт типу TEmployee, друга – встановлює значення властивості, яке відноситься до батьківського класу.