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