Ich bin mir gerade nicht mehr ganz sicher (und kann es leider auch nicht ausprobieren) ob man Interface Methoden als
virtual;
deklarieren kann. Wenn ja, dann könntest du es so ausprobieren:
Delphi-Quellcode:
IMyInterface = interface
['{someGUID}']
procedure MyFirstProcedure; // <-- Eventuell hier ein virtual falls der Compiler meckert und hier ein virtual erlaubt ist
end;
TMyClass = class(TInterfacedObject, IMyInterface)
private
procedure MyFirstProcedure; virtual;
end;
TMyFirstDerivedClass = class(TMyClass)
private
procedure MyFirstProcedure; override;
end;
TMySecondDerivedClass = class(TMyClass)
private
procedure MyFirstProcedure; override;
end;
Wenn nicht, dann könntest du es auch so lösen. Kommt eben darauf an, ob ein Teil der Interface Methoden gleich ist und ein weiterer Teil sich unterscheidet:
Delphi-Quellcode:
IMyInterface = interface
['{someGUID}']
procedure MyFirstProcedure;
end;
TMyClass = class(TInterfacedObject)
private
procedure MyFirstProcedure; virtual;
end;
TMyFirstDerivedClass = class(TMyClass, IMyInterface)
private
procedure MyFirstProcedure; override;
end;
TMySecondDerivedClass = class(TMyClass, IMyInterface)
private
procedure MyFirstProcedure; override;
end;