logo
Лекции програм_new_последняя версия1

Наследование конструкторов и деструкторов.

Наследование – это способность порожденного класса использовать характеристики класса-предка. Благодаря новым свойствам, которыми дополняется потомок, порожденный класс может обладать бỏльшими возможностями, чем его предок. Любой класс может быть порожден от другого класса, для этого при его описании указывается имя класса-родителя.

Потомок автоматически наследует поля, методы и свойства своего родителя и может дополнять их новыми.

Большинство конструкторов реализуют некоторые дополнительные действия, необходимые для правильной работы объекта, поэтому в конструкторе класса–потомка необходимо сначала вызвать конструктор родителя, а затем выполнять дополнительные действия.

Вызов конструктора родительского класса достигается с помощью слова Inherited (унаследованный):

constructor <имя класса-потомка>. create;

begin

inherited create;

{дополнительные действия}

End;

Аналогично можно в деструкторе класса-потомка вызвать деструктор класса-предка.

destructor <имя класса-потомка>. destroy;

begin

{дополнительные действия}

inherited destroy

end;

Слово inherited вызывает любой метод родительского класса, а не только конструктор и деструктор.

Например:

Type TPerson=class

name string;

constructor.create (x:string);

end;

Teacher=class (TPerson)

School: integer;

constructor.create (x:string,y:integer);

end;

constructor TPerson.create;

begin

name:=x;

end;

constructor Teacher.create;

begin

inherited.create (x); {вызывает конструктор родителя}

school:=y; {дополнительное действие – присвоение полю

School значения параметра y }

end;

var a: Teacher;

b: TPerson;

begin

a:= Teacher.create(‘Иванов’,131);

b:= TPerson.create(‘Руслан’);

. . . . .

a.free;

b.free;

. . . . .

End.