Delphi справочник - Форум программистов - Навигация  
 A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z      По первой букве  
System     SysUtils     StrUtils     DateUtils     FileCtrl     ConvUtils     StdConvs     Math     Classes     Dialogs     Types     Variants    ПО Unit   Compiler directives     Directives     Keywords     Types     Variables     Constants     Functions     Procedures    По категории  

форум программистов

Основы Delphi
Inherited
Ключевое слово
Используется для вызова родительского класса конструктора или метода деструктора unit
  
1. Create;
begin
Inherited; // Всегда вызывается в начале конструктора
...
end;

2. Create(arguments);
begin
Inherited Create(arguments); // Всегда вызывается в начале конструктора
...
end;

3. Destroy
begin
...
Inherited; // Всегда вызывается в начале конструктора
end;
Описание
Ключевое слово 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
 


Оплата за обучение в Kata Academy только после твоего трудоустройства в IT, начни карьеру Middle Java-разработчика



Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки? Slurm подготовили для вас особенный продукт!





форум программистов


© Форум Delphi  |  Форум Pascal   |  Блог программистов   |  Исходники Delphi   |  Автор сайта  |  Ссылки   |  Английская версия