Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.201 Beiträge
 
Delphi 12 Athens
 
#4

Re: override - overload - reintroduce - virtual

  Alt 26. Mai 2010, 09:26
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;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat