Конструкторы и деструкторы объектов.



Ключевое слово Constructor определяет процедуру Name конструктора для класса. При создании объекта, вы вызываете метод Constructor класса, а не объекта: objectName := ClassName.Create(parms); Название (Name) для конструктора, обычно Create, но оно этим не ограничено. Однока, будет мудро сохранить это название. Объект может быть создан с или без параметров (см. пример). Конструкторы могут быть определены в public или published разделах определения класса. Вы можете иметь множество конструкторов, но при этом, вы можете определить только один из них как Published. При многочисленных конструкторах, к каждому должна быть прибавлена директива Overload. При осуществлении процедуры конструктора, обычно называемой Create, вы должны вызвать родительского конструктора и сделать это привычкой, например constructor Create; inherited; ... Это гарантирует, что конечный объект безопасно проиллюстрирует образец этого родительского класса, даже если родитель TObject, который не делает ничего в его конструкторе. Код примера иллюстрирует это простое разнообразие Inherited плюс версию, где родительский конструктор имеет параметры.

Ключевое слово Destructor определяет процедуру деструктора Destroy для класса. При освобождении объекта, вызывается Destructor. Это позволяет объекту освободить память или другие используемые ресурсы, которые он использовал. Обычно деструктора имеет название destroy, но это никак не ограничено. Но будет умно сохранить это название. Директива Override должна быть указана, так как мы отменяем виртуальный метод уничтожения Tobject.

 

 

Function|Procedure declaration; Override;

Директива Override определяет метод класса как замена так же названного метода в родительском классе.

Например, Вы могли бы хотеть отменить (заменить) операцию конструктора, чтобы принять во внимание изменения класса, введенные вашим классом. Вы можете только отменить классы определенные как виртуальные (virtual) или динамический (dynamic) (последний вне области основ Delphi).

Только те методы, которые могут быть заметно изменены полученным классом, обычно позволяют сделать так. Если метод отмечен как абстрактный (abstract), так же как и виртуальный (virtual), тогда Вы должны отменить его и осуществить его чтобы он был используемым пользователем вашего класса.

 

Ключевое слово Inheritedиспользуется, чтобы назвать родительский конструктор или метод деструктора, как соответствующий для текущего класса.

Оно вызывается в начале конструктора, и в конце деструктора. Это не является обязательным, но рекомендуется.

Без параметров Inherited вызывает так же названный метод родительского класса, с теми же самыми параметрами.

Вы можете вызвать различный родительский метод, при его соответствии.

 

 

Функция Pred уменьшает значение порядковой переменной, и возвращает её значение.

Вы можете уменьшить:

Символы
Числа без плавающей запятой
Перечисляемые типы
Указатели

Уменьшение происходит в зависимости от размера элемента (единицы). Например, Pointer будет уменьшаться по 4 байта, если указатель указывает на Word.

 

 

/////////////////

Ключевое слово Finallyиспользуется, чтобы отметить начало конечного блока инструкций в инструкции Try. Они будут выполнены независимо от того, что случится в инструкциях Try.

Однако, предложение Finallyфактически не обрабатывает никаких исключений - программа закончится, если никакое предложение Except не найдено (см. примечания ниже).

Try-Finally обычно используется подпрограммой, чтобы позволить освободить ресурсы.

 


Дата добавления: 2018-02-18; просмотров: 219; ЗАКАЗАТЬ РАБОТУ