Класс TlnterfacedObject

В CLX Kylix определен класс TInterfacedObject, который служит базовым классом для объектов интерфейса. Данный класс определен в модуле Kylix System (листинг 10.4).

Листинг 10.4. Определение класса TInterfacedObject

type
TInterfacedObject = class (TObject, IInterface) protected
FRefCount: Integer;
function QueryInterface(const IID: TGUID; out Obj) : HResult; stdcall;
function _AddRef: Integer; stdcall; function _Release: Integer; stdcall; public
procedure AfterConstruction; override; procedure BeforeDestruction; override; class function NewInstance: TObject; override; property RefCount: Integer read FRefCount; end;

Как вы видите, данный класс в качестве родителей имеет класс TObject и интерфейс IInterface. Класс TInterfacedObject позволяет достаточно легко создавать классы, поддерживающие интерфейсы. Например,

type
TMyObjInterfaced = class(TInterfacedObject, IPaint)
end;

На вышеприведенном примере мы определяем новый класс TMyObjInterfaced, который является прямым потомком класса TInterfacedObject и поддерживает некий интерфейс IPaint.

Hosted by uCoz