Структура класса
Синтаксис описания класса:
<имя класса> = class(<имя класса-родителя>)
private { закрытый }
{ Данные и методы, доступные только в данном классе }
protected { защищенный }
{ Данные и методы, доступные только в наследуемых классах }
public { открытый }
{ Данные и методы доступные всем }
published { публикуемый }
{ Данные и методы доступные в Инспекторе объектов Delphi }
end;
Имя класса в Object Pascal принято начинать с буквы Т, а имя данных (их называют полями) – с буквы F.
Базовый класс в Object Pascal – TObject. Этот абстрактный класс, объявленный в модуле System, является родителем всех других классов и содержит только спецификации методов, включая базовый конструктор и деструктор.
Если в объявлении класса не указан класс-родитель, то объявляемый класс будет считаться наследником класса TObject:
Type
TMyClass = Class { эквивалентно TMyClass = Class(TObject) }
. ..
end;
Создание и уничтожение объектов
Главное отличие объектов в Object Pascal заключается в том, что все объекты создаются динамически.
Для создания объекта необходимо вызвать конструктор (в Object Pascal он обычно называется Create), который возвращает указатель – адрес созданного объекта.
|
|
Для уничтожения объекта рекомендуется вызывать метод Free, который проверяет существование объекта (не равен ли он nil), а затем вызывает деструктор (в Object Pascal он обычно называется Destroy).
Пример создания и уничтожения объекта:
Type
ТМуClass = class (TObject)
Private
. ..
Public
. ..
Constructor Create; // Конструктор
Destructor Destroy; // Деструктор
end;
Реализация методов класса
Var
МуObject: ТМуClass;
Begin
МуObject:= ТМуClass.Create; { Создание объекта:
§ имя объекта, МуObject – указатель, результат вызова конструктора
§ конструктор по синтаксису процедура, но вызывается как функция
§ конструктор вызывается c именем класса – ТМуClass. Create
}
. ..
МуObject.Free; // Уничтожение объекта
End.
В реализации конструктора необходимо сначала вызвать конструктор класса-родителя – inherited, а затем выполнить необходимые действия.
Реализация деструктора должна завершаться вызовом деструктора класса-родителя – inherited.