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