Stimm, hast Recht.
OK, Aufrufsignatur gehört der nicht, aber zur Gesamten schon.
Delphi-Quellcode:
TModelKlasseA = class(TObject)
end;
TModelKlasseB = class(TModelKlasseA)
end;
TKlasseA = class(TObjec)
function GetMD: TModelKlasseA;
end;
TKlasseB = class(TKlasseA)
function GetMD: TModelKlasseB; reintroduce;
end;
function TKlasseA.GetMD: TModelKlasseA;
begin
result := TModelKlasseA.Create;
end;
function TKlasseB.GetMD: TModelKlasseB;
begin
result := TModelKlasseB.Create;
end;
Ich würde es dennoch mit Override lösen,
wobei hier TKlasseB dennoch TModelKlasseB ausliefen kann, da diese ja von TModelKlasseA abgeleitet ist.
Delphi-Quellcode:
TModelKlasseA = class(TObject)
end;
TModelKlasseB = class(TModelKlasseA)
end;
TKlasseA = class(TObjec)
function GetMD: TModelKlasseA; virtual; abstract;
end;
TKlasseB = class(TKlasseA)
function GetMD: TModelKlasseA; override;
end;
// TKlasseA.GetMD ist nicht implementiert
function TKlasseB.GetMD: TModelKlasseA;
begin
result := TModelKlasseB.Create;
end;
Delphi-Quellcode:
TModelKlasseA = class(TObject)
end;
TModelKlasseB = class(TModelKlasseA)
end;
TKlasseA = class(TObjec)
function GetMD: TModelKlasseA; virtual;
end;
TKlasseB = class(TKlasseA)
function GetMD: TModelKlasseA; override;
end;
function TKlasseA.GetMD: TModelKlasseA;
begin
result := TModelKlasseA.Create;
end;
function TKlasseB.GetMD: TModelKlasseA;
begin
result := TModelKlasseB.Create;
end;