Inherited/ru
Deutsch · English · Français · Suomi · Русский
В переопределяемом виртуальном методе часто необходимо вызывать реализацию виртуального метода родительского class. Это можно сделать с помощью зарезервированного слова inherited. Аналогично, ключевое слово inherited может использоваться для вызова любого метода родительского class.
Вот простейший пример:
Type
TMyClass = Class(TComponent)
Constructor Create(AOwner : TComponent); override;
end;
Constructor TMyClass.Create(AOwner : TComponent);
begin
Inherited;
// Что-то делаем еще
end;Случаи конструкторов и деструкторов
Constructor, Пример 1 :
...
TTest.Create;
begin
Inherited; // Ставится всегда в начале конструктора и запускает конструктор (только код) родительского класса
...
end;Constructor, Пример 2 :
...
TTest.Create(...);
begin
Inherited Create(...); // Ставится всегда в начале конструктора и запускает конструктор (только код) родительского класса
...
end;
...Destructor, Пример 3 :
TTest.Destroy;
begin
...
Inherited; // Ставится всегда в конце деструктора и запускает деструктор (только код) родительского класса
end;
...Переопределение виртуальных методов
type
TMyClass = class(TStrings)
function GetObject(Index: Integer): TObject; override;
end;
function TMyClass.GetObject(Index: Integer): TObject;
begin
// Получаем результат из метода родительского класса
Result := inherited GetObject(Index);
// Делаем что-нибудь дальше
end;From the Free Pascal wiki, page "Inherited/ru", as it stood on 2022-08-06 after a change by Kai Burghardt, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.