Da hast du völlig recht Uwe. Die Idee finde ich sogar sehr gut, in der Basisklasse eine Art von Not-Implemented-Benachrichtigung einzubauen. Irgendwie finde ich es schade, dass es neben den protected- und public-Abschnitten in Klassen nicht auch einen gibt wo man Methoden deklarieren kann, die
ausschließlich in Kindklassen angesprochen/überschrieben werden können und deren Sichtbarkeit nach außen hin in Kindklassen nicht erhöht werden kann. Also ungefähr sowas:
Delphi-Quellcode:
type
TMyBaseClass = class(TObject)
private
protected
descendend
procedure MyMethod; virtual; obligatory;
public
end;
TMyChildClass = class(TMyBaseClass)
descended
procedure MyMethod; override; // <-- Klappt
end;
TMyChildClass2 = class(TMyBaseClass)
public
procedure MyMethod; override; // <-- Compilerfehler wegen erhöhter Sichtbarkeit
end;
TMyChildClass3 = class(TMyBaseClass)
descendend
// MyMethod wird nicht implementiert, Compilerfehler
end;
Damit könnte man von vornherein ausschließen, dass solche Methoden nach außen hin sichtbar werden. Ein Konstrukt aus protected Methode + final trifft das irgendwie nicht so richtig. Das Statement "obligatory" würde die Implementierung einer Methode in Kindklassen erzwingen - "abstract" lässt es ja offen und im Zweifel kracht es.