Zitat:
Aber abstrakte Klassen sind doch im "normalen" Sprachumfang (vor Delphi 8 ) gar nicht möglich
was ist jetzt falsch daran:
Delphi-Quellcode:
type
TSomething = class abstract (TObject)
private
FElement: TSomethingElse
function DoSomeThingGeneric;
function YouImplementThatPlease; virtual; abstract;
public
constructor Create(genericparam: TType); virtual; abstract;
end;
das ist eine astreine abstrakte klasse(ist natürlcih D2006, eventuell gibts das zuvor noch gar nicht). DoSomeThingGeneric ist bereits implementiert, und greift vielleicht auf FElement zu. Damit kann ich bestimmte Sachen bereits in dieser Basisiklasse implementieren. Die Folgeklassen sollten dann eben YouImplementThatPlease überschrieben.
Damit kann man auch, wenn man nur weiss, dass ein Objekt von TSomeThing abstammt, YouImplementThatPlease aufrufen (auf die Gefahr hin, dass man einen abstract error erntet).
So etwas ist nicht nur in Komponenten sinnvoll, sondern überall, wo man auf sachen zugreifen willl, von denen man zur Compiletime nicht genau weiss, wie sie später aussehen.
(Ich verwende so etwas im übrigen gerade)
@Der_Unwissende: Ja, PlugIns, das ist hier wohl das Stichwort.