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 не ограничивается конструкторами, он может быть использован также для любой процедуры или функции или деструктора. |