Zitat von
3_of_8:
Auch statische Methoden können überschrieben werden, nämlich mithilfe von reintroduce.
Nein, können sie nicht. Oder dein Begriff für die Benennung "überschreiben" geht auf Tipp-Ex zurück anstatt auf Polymorphie und virtual method slots.
einfach mal ein Consolen App Project anlegen und den Code reinwerfen:
Delphi-Quellcode:
program Bleistift;
{$APPTYPE CONSOLE}
type
ClassA = class
function Test : String; virtual;
end;
ClassB = class(ClassA)
function Test : String; reintroduce;
end;
ClassC = class(ClassA)
function Test : String; override;
end;
ClassAClass = class of ClassA;
function ClassA.Test : String;
begin
result := 'A';
end;
function ClassB.Test : String;
begin
result := 'B';
end;
function ClassC.Test : String;
begin
result := 'C';
end;
procedure Test(classRef : ClassAClass);
var
inst : ClassA;
begin
inst := classRef.Create();
Writeln(inst.Test());
inst.Free();
end;
begin
Test(ClassA);
Test(ClassB);
Test(ClassC);
end.
Es kommt natürlich A A C raus, nicht A B C.