Das ist mir jetzt noch nicht ganz klar, was du meinst. Um mal bei deinem Beispiel zu bleiben - mit einer abstrakten Klasse sieht das ja so aus:
Delphi-Quellcode:
type
TSuperClass = class
procedure Blubb; virtual; abstract;
end;
TDings = class(TSuperClass)
public
procedure Blubb; override;
end;
TBums = class(TSuperClass)
public
procedure Blubb; override;
end;
...
procedure TConsumer.Wuppdi(const SuperClass: TSuperClass);
begin
SuperClass.Blubb;
end;
Ich meine nicht, dass man den interface-Parameter jemals wieder ändern muss - ich hatte mich nur auf deine Aussage bezogen, dass man den Parameter halt einmal ändern muss, wenn man das interface neu einführt. Genauso ist es ja hier mit dem Parameter für die abstrakte Klasse: einmal muss man ihn ändern, aber danach nicht mehr.
Und was meinst du hier mit "Hierarchie einhalten"? Ich muss von der abstrakten Basisklasse ableiten - genauso wie du das interface implementieren musst. Das gibt sich doch eigentlich nichts.