Delphi-Help

Inherited

Печать
Рейтинг пользователей: / 1
ХудшийЛучший 

Inherited

Описание

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.

Fruit is a fruit
Banana is a fruit
Pink Lady is a fruit
Pink Lady is an apple

Примечание

Авторизация



Счетчики