Zitat von
Neutral General:
Ist eine class function nicht sowieso immer statisch?
Nö, es gibt virtuelle Klassenmethoden:
Delphi-Quellcode:
type
TBaseClass = class of TBase;
TBase = class
class procedure Bla; virtual;
end;
TDerived = class(TBase)
class procedure Bla; override;
end;
implementation
{ TBase }
class procedure TBase.Bla;
begin
Writeln('TBase.Bla');
end;
{ TDerived }
class procedure TDerived.Bla;
begin
Writeln('TDerived.Bla');
end;
Delphi-Quellcode:
var
c: TBaseClass;
begin
c := TDerived;
c.Bla;
end;
Dazu wird der implizite Self-Pointer benötigt, den das static entfernt. Das Schlüsselwort wurde für Kompatibilität mit .NET eingeführt, weil das nur die Variante ohne Self beherrscht.