TInterfacedObject

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Schnittstellen verwenden


Wenn Sie eine Klasse definieren, die eine oder mehrere Schnittstellen unterstützt, dann bietet sich die Verwendung von TInterfacedObject als Basisklasse an, da diese Klasse die Methoden von IInterface implementiert. Die Klasse TInterfacedObject ist in der Unit System folgendermaßen deklariert:

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;

Das Ableiten eigener Schnittstellen von TInterfacedObject ist problemlos möglich. In der folgenden Beispieldeklaration ist TDerived als direkter Nachkomme von TInterfacedObject abgeleitet und implementiert die hypothetische Schnittstelle IPaint.

type
  TDerived = class(TInterfacedObject, IPaint)
  .
  .
  .
  end;

Da die Klasse TInterfacedObject die Methoden von IInterface implementiert, führt sie automatisch die Referenzzählung und die Speicherverwaltung für von ihr abgeleitete Objekte durch. Weitere Informationen finden Sie unter Speicherverwaltung für Schnittstellenobjekte. In diesem Thema wird auch beschrieben, wie Sie eigene Klassen erstellen, die Schnittstellen implementieren, aber nicht die Referenzzählung von TInterfacedObject nutzen.

Siehe auch