Описание |
Ключевое слово Inherited используется, чтобы назвать родительский конструктор или метод деструктора, как соответствующий для текущего класса.
Оно вызывается в начале конструктора, и в конце деструктора. Это не является обязательным, но рекомендуется.
Без параметров Inherited вызывает так же названный метод родительского класса, с теми же самыми параметрами.
Вы можете вызвать различный родительский метод, при его соответствии.
|
|
Похожие команды |
Class Начинает объявление типа объектного класса
Constructor Определяет метод используемый для создания объекта из класса
Destructor Определяет метод используемый для уничтожения объекта
Function Определяет подпрограмму, которая возвращает значение
Object Позволяет данным типа подпрограмм обращаться к методу объекта
Overload Позволяет 2-м или более подпрограммам иметь одинаковое название
Override Определяет метод, который заменяет виртуальный родительский метод класса
Procedure Определяет подпрограмму, которая не возвращает значение
| |
|
Пример кода : Примеры 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
|
|