Und das mit dem
Self
in der Klassenmethode ist auch gut so, denn dadurch geht das hier:
Delphi-Quellcode:
program dp_183894;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
type
TFoo =
class
public
class function Construct: TFoo;
end;
TBar =
class( TFoo )
end;
{ TFoo }
class function TFoo.Construct: TFoo;
begin
Result := Self.Create;
end;
procedure Test;
var
LFoo: TFoo;
begin
LFoo := TBar.Construct;
try
Writeln( LFoo.ClassName );
finally
LFoo.Free;
end;
end;
begin
try
Test;
except
on E:
Exception do
Writeln( E.ClassName, '
: ', E.
Message );
end;
ReadLn;
end.
TBar.Construct
ruft die geerbte Klassenmethode von
TFoo
auf, da aber dort mit
Self.Create
die Instanz erzeugt wird, bekommen wir auch tatsächlich eine
TBar
Instanz zurück
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)