У меня есть интерфейс и соответствующий ему объект. Например ...Могу ли я использовать виртуальные абстрактные методы для наследования сопряженного объекта?
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;
Могу ли я это сделать, и интерфейс по-прежнему работает с этими полями? И мне нужно определить его так же в интерфейсе? (Я знаю, конечно, все поля в интерфейсе уже абстрактны)
Почему не пробовал компилятор самостоятельно? (учиться на практике) - Почему вы ожидаете, что это не работает? –