Folgendes könnte unter bestimmten Umständen auch gehen und erzwingt nicht die Implementierung in der Basisklasse. Damit lässt es sich auch in bestehende Vererbungshierarchien einbinden. Klappt aber nur, wenn die Methoden weitestgehend autark sind.
Delphi-Quellcode:
// implementiert
TMyClassRoot = class ();
procedure MySharedProcedure;
end;
IMyLibrary = interface
procedure MySharedProcedure;
procedure MyFirstProcedure;
end;
TMyClassA = class ( TInterfacedObject, IMyLibrary);
private
FMyRoot: TMyClassRoot; // im Create erstellen und Destroy freigeben
protected
MyRoot: TMyClassRoot read FMyRoot implements IMyLibrary; // was in TMyClassRoot fehlt, liefert diese Klasse nach
procedure MyFirstProcedure;
end;
TMyClassB = class ( TInterfacedObject, IMyLibrary);
private
FMyRoot: TMyClassRoot; // im Create erstellen und Destroy freigeben
protected
MyRoot: TMyClassRoot read FMyRoot implements IMyLibrary; // was in TMyClassRoot fehlt, liefert diese Klasse nach
procedure MyFirstProcedure;
end;