Класс
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; publicprocedure 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.