Eine Kindklasse möchte eine abstrakte Methode der Oberklasse implementieren und überladen. Beispiel:
Delphi-Quellcode:
TBaseClass = class abstract
procedure someProc(); virtual; abstract;
end;
TChildClass = class(TBaseClass)
procedure someProc(); overload; override;
procedure someProc(const someInput: Integer); overload; virtual;
end;
Der Compiler meint:
Code:
Warnung: W1010 Methode 'someProc' verbirgt virtuelle Methode vom Basistyp 'TBaseClass'
Ich sehe nicht, wie da irgendetwas verborgen wird
Die Compilerwarnung geht weg wenn man entweder
- TBaseClass::someProc() die Direktive 'overload' hinzufügt
- TChildClass::someProc(Integer) die Direktive 'reintroduce' hinzufügt
Ersteres finde ich Quatsch. In der Oberklasse interessiert es mich herzlich wenig, ob in einer Kindklasse mal überladen wird. Außerdem würde ich mir so wahrscheinlich angewöhnen, grundsätzlich an jede Methode ein 'overload' anzuhängen.
Zweiteres ist logisch, laut Hilfe macht 'reintroduce' nichts anderes, als nur Compilerwarnungen zu unterdrücken. Aber wie gesagt: Ich sehe nicht, wie hier überhaupt etwas verdeckt wird...