インターフェイスと、その背後にある対応するオブジェクトがあります。例えば...
IMyInterface = interface
function GetSomething: WideString;
procedure SetSomething(const Value: WideString);
property Something: WideString read GetSomething write SetSomething
end;
TMyObject = class(TInterfacedObject, IMyInterface)
private
function GetSomething: WideString;
procedure SetSomething(const Value: WideString);
public
property Something: WideString read GetSomething write SetSomething
end;
このインターフェイスを使用して、DLL を介してこのオブジェクトとやり取りできるようにします。
今、私はこのオブジェクトを継承し、これらのメソッドのいくつかをオーバーライドしたいと思います...
TMyOtherObject = class(TMyObject)
private
function GetSomething: WideString; override;
procedure SetSomething(const Value: WideString); override;
ただし、基本フィールドを仮想および抽象化して、基本的に子にこれらを継承させたいと思います...
TMyObject = class(TInterfacedObject, IMyInterface)
private
function GetSomething: WideString; virtual; abstract;
procedure SetSomething(const Value: WideString); virtual; abstract;
これを行っても、これらのフィールドでインターフェイスを引き続き使用できますか? また、インターフェイス内でもこのように定義する必要がありますか? (もちろん、インターフェースのすべてのフィールドはすでに抽象的であることは知っています)