1. Create;
begin
Inherited; // Всегда вызывается в начале конструктора
...
end;
2. Create(arguments); begin Inherited Create(arguments); // Всегда вызывается в начале конструктора
... end;
3. Destroy
begin
...
Inherited; // Всегда вызывается в начале конструктора
end;
Ключевое слово Inherited используется, чтобы назвать родительский конструктор или метод деструктора, как соответствующий для текущего класса.
Оно вызывается в начале конструктора, и в конце деструктора. Это не является обязательным, но рекомендуется.
Без параметров Inherited вызывает так же названный метод родительского класса, с теми же самыми параметрами.
Вы можете вызвать различный родительский метод, при его соответствии.
|
// Полный код Модуля.
// -----------------------------------------------------------
// Вы должны поместить этот код в модуль с именем Unit1 и с формой
// названную Form1, которая имеет событие OnCreate названное FormCreate.
unit Unit1;
interface
uses
Forms, Dialogs, Classes, Controls, StdCtrls;
type
// Определение родительского класса основанного, по умолчанию, на TObject
TFruit = class
public
name : string;
Constructor Create; overload; // Этот конструктор использует умолчания
Constructor Create(name : string); overload;
end;
// Определение типа потомка
TApple = class(TFruit)
public
diameter : Integer;
published
Constructor Create(name : string; diameter : Integer);
end;
// Класс формы используемой этим модулем
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm} // Вложение определений формы
// Создание объекта fruit - версия без параметров
constructor TFruit.Create;
begin
// Сначала выполняется родительский конструктор (TObject)
Inherited; // Вызов родительского метода Create
// Теперь устанавливаем имя fruit, по умолчанию
self.name := 'Fruit';
end;
// Создание объекта fruit - версия с параметрами
constructor TFruit.Create(name: string);
begin
// Сначала выполняется родительский конструктор
Inherited Create; // Вызов родительского метода Create
// И сохраняем имя fruit
self.name := name;
end;
// Создание объекта apple
constructor TApple.Create(name: string; diameter : Integer);
begin
// Сначала выполняется родительский конструктор (TFruit)
Inherited Create(name); // Вызов родительского метода
// Теперь сохраняем переданный apple диаметр
self.diameter := diameter;
end;
// Основная строка кода
procedure TForm1.FormCreate(Sender: TObject);
var
fruit : TFruit;
banana : TFruit;
apple : TApple;
begin
// Создание 3 различных объекта fruit
fruit := TFruit.Create;
banana := TFruit.Create('Banana');
apple := TApple.Create('Pink Lady', 12);
// Смотрим какие из наших объектов являются fruit
if fruit Is TFruit then ShowMessage(fruit.name +' is a fruit');
if banana Is TFruit then ShowMessage(banana.name +' is a fruit');
if apple Is TFruit then ShowMessage(apple.name +' is a fruit');
// Смотрим какие объекты являются apple
if fruit Is TApple then ShowMessage(fruit.name +' is an apple');
if banana Is TApple then ShowMessage(banana.name +' is an apple');
if apple Is TApple then ShowMessage(apple.name +' is an apple');
end;
end.
|