Sign in Join
Wiki copytemporary

Inherited/ru: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Inherited/ru

OldNewLine
1+В переопределяемом виртуальном [[Method|методе]] часто необходимо вызывать реализацию виртуального метода родительского [[Class/ru|class]]. Это можно сделать с помощью [[Reserved word/ru|зарезервированного слова]] `inherited`. Аналогично, [[Keyword/ru|ключевое слово]] `inherited` может использоваться для вызова любого метода родительского `class`.
2+
3+Вот простейший пример:
4+
5+``` pascal
6+Type
7+ TMyClass = Class(TComponent)
8+ Constructor Create(AOwner : TComponent); override;
9+ end;
10+
11+Constructor TMyClass.Create(AOwner : TComponent);
12+begin
13+ Inherited;
14+ // Что-то делаем еще
15+end;
16+```
17+
18+## Случаи конструкторов и деструкторов
19+
20+[[Constructor/ru|Constructor]], Пример 1 :
21+
22+``` pascal
23+ ...
24+ TTest.Create;
25+ begin
26+ Inherited; // Ставится всегда в начале конструктора и запускает конструктор (только код) родительского класса
27+ ...
28+ end;
29+```
30+
31+`Constructor`, Пример 2 :
32+
33+``` pascal
34+ ...
35+ TTest.Create(...);
36+ begin
37+ Inherited Create(...); // Ставится всегда в начале конструктора и запускает конструктор (только код) родительского класса
38+ ...
39+ end;
40+ ...
41+```
42+
43+[[Destructor]], Пример 3 :
44+
45+``` pascal
46+ TTest.Destroy;
47+ begin
48+ ...
49+ Inherited; // Ставится всегда в конце деструктора и запускает деструктор (только код) родительского класса
50+ end;
51+ ...
52+```
53+
54+## Переопределение виртуальных методов
55+
56+``` pascal
57+type
58+ TMyClass = class(TStrings)
59+ function GetObject(Index: Integer): TObject; override;
60+ end;
61+
62+function TMyClass.GetObject(Index: Integer): TObject;
63+begin
64+ // Получаем результат из метода родительского класса
65+ Result := inherited GetObject(Index);
66+ // Делаем что-нибудь дальше
67+end;
68+```
69+
70+---
71+*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](/wiki-contact).*

Back to history