Определение класса TInterfacedObject
Листинг 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.