6.5.8 Использование наследования

Вверх  Предыдущий  Следующий

В переопределяемом виртуальном методе часто бывает необходимо вызвать родительский метод. Это может быть сделано с помощью ключевого слова inherited. Ключевое слово inherited можно использовать и чтобы вызвать любой метод родительского класса.

В простейшем случае:

Type

TMyClass = Class(TComponent)

  Constructor Create(AOwner : TComponent); override;

end;

 

Constructor TMyClass.Create(AOwner : TComponent);

begin

Inherited;

// Ещё код

end;

В приведенном выше примере, Inherited оператор вызовет (конструктор) Create из TComponent, передав ему AOwner в качестве параметра: параметры, которые были переданы текущему методу могут быть переданы и методу родителя. Параметры могут быть явно не указаны: если ничего не указано, то компилятор передаст в метод те же аргументы, что и получил.

Второй случай немного сложнее:

Type

TMyClass = Class(TComponent)

  Constructor Create(AOwner : TComponent); override;

  Constructor CreateNew(AOwner : TComponent; DoExtra : Boolean);

end;

 

Constructor TMyClass.Create(AOwner : TComponent);

begin

Inherited;

end;

 

Constructor TMyClass.CreateNew(AOwner : TComponent; DoExtra : Boolean);

begin

Inherited Create(AOwner);

// Работаем

end;

Метод CreateNew сначала вызывает TComponent.Create и передаст ему AOwner в качестве параметра. Он не вызовет TMyClass.Create.

Хотя тут были приведены примеры использования конструкторов, использование inherited не ограничивается конструкторами, он может быть использован также для любой процедуры или функции или деструктора.