Концепція об’єктно-орієнтованого програмування передбачає можливість визначати нові класи за допомогою додавання полів, властивостей і методів до вже існуючих класів. такий механізм отримання нових класів називається породженням. При цьому но.вий, породжений клас (нащадок) успадковує властивості і методи свого базового, батьківського класу.
В оголошенні класу-нащадка вказується клас батька. Наприклад, клас 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, друга – встановлює значення властивості, яке відноситься до батьківського класу.