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