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