Разное
Облака / Clouds
The bast cloud service
Get 20 GB free!!!
Support WebDav.
Show more >>
time-tested cloud storage
Support WebDav.
Последние книги
Самое популярное
Все бесплатно
Все ссылки на файлы, расположенные на страницах сайта, добавлены пользователями и доступны для бесплатного скачивания. За содержание этих файлов администрация сайта ответственности не несет.
Навигация
Вопросы
Вычисление интеграла с заданной точностью алгоритмом Симпсона.
Категория: Математика
Категория: Математика
Тpансляция ошибок в BDE
Категория: Базы данных
Категория: Базы данных
Получить короткий путь файла (изменив русские буквы) если есть длинный и на оборот
Категория: Файловая система
Категория: Файловая система
Как соединить несколько файлов в один
Категория: Текст и строки
Категория: Текст и строки
BDE. Создание алиасов
Категория: Базы данных
Категория: Базы данных
Число четное или нечетное
Категория: Математика
Категория: Математика
Сохраняем Bitmap в поле dbase
Категория: Базы данных
Категория: Базы данных
Преобразовать любой тип в строку
Категория: Текст и строки
Категория: Текст и строки
Как создать вычисляемые поля
Категория: Базы данных
Категория: Базы данных
Округление целого числа до 5
Категория: Математика
Категория: Математика
Delphi - Справочник: Constructor
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 |