Класс TObject является родоначальником всей иерархии классов VCL. Он реализует функции, которые обязательно будет выполнять любой объект, который может быть создан в среде разработки. Из-за большого разнообразия его потомков, круг общих для всех классов операций весьма невелик.
В первую очередь — это создание экземпляра объекта и его уничтожение. Любой объект выполняет эти две операции в обязательном порядке.
Процесс создания объекта включает выделение области адресного пространства, установку указателя на экземпляр объекта, задание начальных значений свойств и выполнение установочных действий, связанных с назначением объекта. В общем случае две последние операции могут не выполняться.
Указатель на экземпляр объекта передается в переменную объектного типа, которая в дальнейшем будет идентифицировать объект в программном коде приложения. В приведенном выше фрагменте кода переменная объектного типа SomeList объявлена как экземпляр типа TStrings. При создании экземпляра этого типа конструктор Create возвращает в переменную SomeList указатель на выделенную для нового объекта область памяти. Для этого применяется метод Newinstance, который вызывается в конструкторе автоматически:
class function Newinstance: TObject; virtual;
Объект класса TObject обеспечивает выполнение этого процесса для любого порожденного от него объекта. А уже внутри конструктора, который унаследован от класса TObject, можно предусмотреть инициализацию переменных и выполнение дополнительных операций.
Объявление конструктора выглядит следующим образом:
constructor Create;
В конструкторах потомков это объявление может перекрываться, но при необходимости вызвать конструктор предка используется оператор inherited:
constructor TSomeObject.Create;
begin
inherited Create;
end;
Для уничтожения экземпляра объекта в классе TObject предназначены методы Destroy и Free:
Абстрактный класс TОbjeсt является базовым классом, от которого произошли все остальные классы.
Разработчикам компонентов вовсе не обязательно создавать свои компоненты как непосредственные потомки класса TОbjeсt. Библиотека VCL предоставляет широкий выбор классов потомков класса TОbjeсt, и создаваемые компоненты могут быть производными от них. Эти уже существующие классы обеспечивают большинство функциональных возможностей, которые могут понадобиться новым компонентам. Лишь при создании классов, не являющихся компонентами, имеет смысл делать их потомками класса TОbjeсt.
Методы Create() и Destroy() класса TОbjeсt предназначены для выделения и освобождения памяти для экземпляра объекта. Конструктор TОbjeсt.Create() возвращает указатель на созданный объект. Класс TОbjeсt содержит несколько полезных функций, позволяющих получить информацию об объекте.
Библиотека VCL использует в основном внутренние вызовы методов класса TОbjeсt, что позволяет получить необходимую информацию о типе класса, его имени, базовых классах (предках) для экземпляра любого класса, поскольку все они являются потомками TОbjeсt.