|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Существование «прародителя» всех классовВ языке Delphi существует предопределенный класс TObject, который служит неявным предком тех классов, для которых предок не указан. Это означает, что объявление
type type TTextReader = class ~ TTextReader = class(TObject) ... …
end; end; Класс TObject – корень любой иерархии классов. Он содержит ряд методов, которые по наследству передаются всем остальным классам. Среди них конструктор Create, деструктор Destroy, метод Free и некоторые другие методы.
TObject = class constructor Create; procedure Free; class function InitInstance(Instance: Pointer): TObject; procedure CleanupInstance; function ClassType: TClass; class function ClassName: ShortString; class function ClassNameIs(constName: string): Boolean; class function ClassParent: TClass; class function ClassInfo: Pointer; class function InstanceSize: Longint; class function InheritsFrom(AClass: TClass): Boolean; class function MethodAddress(constName: ShortString): Pointer; class function MethodName(Address: Pointer): ShortString; function FieldAddress(constName: ShortString): Pointer; function GetInterface(constIID: TGUID; out Obj): Boolean; class function GetInterfaceEntry(constIID: TGUID): PInterfaceEntry; class function GetInterfaceTable: PInterfaceTable; function SafeCallException(ExceptObject: TObject; ExceptAddr: Pointer): HResult; virtual; procedure AfterConstruction; virtual; procedure BeforeDestruction; virtual; procedure Dispatch(var Message); virtual; procedure DefaultHandler(var Message); virtual; class function NewInstance: TObject; virtual; procedure FreeInstance; virtual; destructor Destroy; virtual; end; Create – стандартный конструктор. Free – уничтожает объект: вызывает стандартный деструктор Destroy, если значение псевдопеременной Self не равно nil. InitInstance(Instance: Pointer): TObject – при создании объекта инициализирует нулями выделенную память. На практике нет необходимости вызывать этот метод явно. CleanupInstance – освобождает память, занимаемую полями с типом string, Variant, динамический массив и интерфейс. На практике нет необходимости вызывать этот метод явно. ClassType: TClass – возвращает описатель класса (метакласс). ClassName: ShortString – возвращает имя класса. ClassNameIs(const Name: string): Boolean – проверяет, является ли заданная строка именем класса. ClassParent: TClass – возвращает описатель базового класса. ClassInfo: Pointer – возвращает указатель на соответствующую классу таблицу RTTI (от англ. Runtime Type Information). Таблица RTTI используется для проверки типов данных на этапе выполнения программы. InstanceSize: Longint – возвращает количество байт, необходимых для хранения в памяти одного объекта соответствующего класса. Заметим, что значение, возвращаемое этим методом и значение, возвращаемое функцией SizeOf при передаче ей в качестве аргумента объектной переменной – это разные значения. Функция SizeOf всегда возвращает значение 4 (SizeOf(Pointer)), поскольку объектная переменная – это ни что иное как ссылка на данные объекта в памяти. Значение InstanceSize – это размер этих данных, а не размер объектной переменной. InheritsFrom(AClass: TClass): Boolean – проверяет, является ли класс AClass базовым классом. MethodAddress(const Name: ShortString): Pointer – возвращает адрес published-метода, имя которого задается параметром Name. MethodName(Address: Pointer): ShortString – возвращает имя published-метода по заданному адресу. FieldAddress(const Name: ShortString): Pointer – возвращает адрес published-поля, имя которого задается параметром Name. GetInterface(const IID: TGUID; out Obj): Boolean – возвращает ссылку на интерфейс через параметр Obj; идентификатор интерфейса задается параметром IID. GetInterfaceEntry(const IID: TGUID): PInterfaceEntry – возвращает информацию об интерфейсе, который реализуется классом. Идентификатор интерфейса задается параметром IID. GetInterfaceTable: PInterfaceTable – возвращает указатель на таблицу с информацией обо всех интерфейсах, реализуемых классом. AfterConstruction – автоматически вызывается после создания объекта. Метод не предназначен для явного вызова из программы. Используется для того, чтобы выполнить определенные действия уже после создания объекта (для этого его необходимо переопределить в производных классах). BeforeDestruction – автоматически вызывается перед уничтожением объекта. Метод не предназначен для явного вызова из программы. Используется для того, чтобы выполнить определенные действия непосредственно перед уничтожением объекта (для этого его необходимо переопределить в производных классах). Dispatch(var Message) – служит для вызова методов, объявленных с ключевым словом message. DefaultHandler(var Message) – вызывается методом Dispatch в том случае, если метод, соответствующий сообщению Message, не был найден. NewInstance: TObject – вызывается при создании объекта для выделения динамической памяти, чтобы разместить в ней данные объекта. Метод вызывается автоматически, поэтому нет необходимости вызывать его явно. FreeInstance – вызывается при уничтожении объекта для освобождения занятой объектомдинамической памяти. Метод вызывается автоматически, поэтому нет необходимости вызывать его явно. Destroy – стандартный деструктор.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.006 сек.) |