Gerade mit meinem Turbo Delphi getestet:
Delphi-Quellcode:
type
ClassA = class
function Test : String; virtual;
end;
ClassB = class(ClassA)
function Test : String; reintroduce;
end;
ClassC = class(ClassA)
function Test : String; override; final;
end;
Das gibt keine Fehlermeldung.
Schreibt man das final zusaetzlich bei ClassA.Test dran, so gibt es eine Fehlermeldung fuer ClassC.Test das die Methode nicht ueberschrieben werden darf.
Bei ClassB.Test eingefuegt gibt es eine Fehlermeldung das die Methode nicht virtuell sei und daher kein final haben darf. Offensichtlich impliziert reintroduce nicht virtual. Schreibt man noch virtual dazu dann geht es wieder.
Edit:
final ist bestimmt nicht vor D8 implementiert. Das stammt vermutlich von den fuer .net noetigen Erweiterungen der Sprache.