На этом шаге мы рассмотрим методы класса TObject.
Класс TObject инкапсулирует основные функции, свойственные всем объектам Delphi. Интерфейс TObject обеспечивает:
Все классы в Delphi являются прямыми или косвенными наследниками TObject. Прямое наследование используется только при объявлении простых классов, объекты которых не являются компонентами, не могут присваиваться друг другу и не участвуют в операциях обмена с потоками. Подавляющее большинство классов являются косвенными наследниками TObject и образуются от производных классов. Если при объявлении нового типа объектов не указывается класс-предок, то Delphi считает TObject предком нового класса.
Во всех объектах, которые используются в программах, допустимо применять методы, определенные в классе TObject. Перечислим основные из них (таблица 1):
Метод | Описание |
---|---|
constructor Create; | Конструктор. Создает новый экземпляр объекта и инициирует обработчик исключительных ситуаций. Не осуществляет инициализацию каких-либо данных, поэтому перегружается в классах-наследниках. |
destructor Destroy; virtual; | Деструктор. Производит действия по уничтожению экземпляра объекта. Рекомендуется вызывать не Destroy, а Free. |
procedure Free; | Уничтожает объект и освобождает выделенную под него память. Автоматически вызывает Destroy, если объект существует. |
class function NewInstance: TObject; virtual; | Выделяет область памяти под объект и возвращает указатель на нее. Автоматически вызывается всеми конструкторами. Использует InstanceSize. Может перегружаться в классах-наследниках. |
class procedure InitInstance (Instance: Pointer) : TObject; | Инициализирует экземпляр объекта и указатель на его таблицу виртуальных методов. Вызывается автоматически методом NewInstance. Не может быть перегружен. |
procedure FreeInstance; virtual; | Освобождает память, выделенную ранее методом NewInstance. Автоматически вызывается деструктором Destroy. Непосредственный вызов пользователем не требуется. Должен быть перегружен, если перегружен метод NewInstance. Использует InstanceSize для определения размера выделенной области памяти. |
function ClassType: TClass; | Возвращает указатель на класс вызвавшего объекта. |
class function ClassName: string; | Возвращает строку с именем класса. |
class function ClassParent: TClass; | Возвращает указатель на класс-предок. |
class function ClassInfo: Pointer; | Возвращает указатель на структуру, содержащую информацию о классе. |
class function InstanceSize: LongInt; | Возвращает размер экземпляра объекта. |
class function InheritsFrom(AClass: TClass): Boolean; | Проверяет, является ли данный класс порожденным от класса AClass и возвращает соответствующее логическое значение. |
class function ClassNameIs(const Name: string): Boolean; | Возвращает True, если передаваемое в функцию имя совпадает с именем данного класса. |
class function MethodAddress (const Name: string): Pointer; | Возвращает адрес метода вызвавшего объекта с заданным именем. |
class function MethodName(Address: Pointer): string; | Возвращает имя метода с заданным адресом. |
function FieldAddress (const Name: string): Pointer; | Возвращает адрес поля вызвавшего объекта с заданным именем. |
На следующем шаге мы рассмотрим состав класса TComponent.