Облака / Clouds
    Go to Copy.com
    Copy.com
    The bast cloud service
    Get 20 GB free!!!
    Support WebDav.
    Show more >>

    Go to Dropbox.com
    Dropbox.com
    time-tested cloud storage
    Support WebDav.
Все бесплатно
    Все ссылки на файлы, расположенные на страницах сайта, добавлены пользователями и доступны для бесплатного скачивания. За содержание этих файлов администрация сайта ответственности не несет.



Вопросы
  Тpансляция ошибок в BDE
   Категория: Базы данных
  Как соединить несколько файлов в один
   Категория: Текст и строки
  BDE. Создание алиасов
   Категория: Базы данных
  Число четное или нечетное
   Категория: Математика
  Сохраняем Bitmap в поле dbase
   Категория: Базы данных
  Преобразовать любой тип в строку
   Категория: Текст и строки
  Как создать вычисляемые поля
   Категория: Базы данных
  Округление целого числа до 5
   Категория: Математика

Delphi - Справочник: Constructor

ABCDEFGHIJKLMNOPQRSTUVWXYZ

  << Вернуться  

 Constructor
1 type Class declaration
...
Constructor Name; {Overload;}
...
end;
2 type Class declaration
...
Constructor Name(Arguments); {Overload;}
...
end;
Ключевое слово (Unit )
Определяет метод используемый для создания объекта из класса
Описание:
Ключевое слово Constructor определяет процедуру Name конструктора для класса.

При создании объекта, вы вызываете метод Constructor класса, а не объекта:

objectName := ClassName.Create(parms);

Название (Name) для конструктора, обычно Create, но оно этим не ограничено. Однока, будет мудро сохранить это название.

Объект может быть создан с или без параметров (см. пример).

Конструкторы могут быть определены в public или published разделах определения класса.

Вы можете иметь множество конструкторов, но при этом, вы можете определить только один из них как Published. При многочисленных конструкторах, к каждому должна быть прибавлена директива Overload.

При осуществлении процедуры конструктора, обычно называемой Create, вы должны вызвать родительского конструктора и сделать это привычкой, например

constructor Create;
inherited;
...

Это гарантирует, что конечный объект безопасно проиллюстрирует образец этого родительского класса, даже если родитель TObject, который не делает ничего в его конструкторе. Код примера иллюстрирует это простое разнообразие 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 // Не cможет выполниться родительский конструктор - параметры отличаются // И сохраняем имя 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 +' - fruit'); if banana Is TFruit then ShowMessage(banana.name +' - fruit'); if apple Is TFruit then ShowMessage(apple.name +' - fruit'); // Смотрим какие объекты являются apple if fruit Is TApple then ShowMessage(fruit.name +' - apple'); if banana Is TApple then ShowMessage(banana.name +' - apple'); if apple Is TApple then ShowMessage(apple.name +' - apple'); end; end.

Результат:
Fruit - fruit
Banana - fruit
Pink Lady - fruit
Pink Lady - apple

  << Вернуться