Hallo,
so langsam muss ich mich auch mal mit Vererbung und Polymorphie auseinandersetzen. Leider habe ich ein Problem mit dem Überschreiben einer Funktion.
Ich habe folgende Vorfahrklassen:
Delphi-Quellcode:
TJob = class(Tobject)
private
fId: integer; // eindeutige JobId
public
Feedback: integer;
property Id: integer read fId;
constructor Create(aParent: TJobList);
destructor Destroy; override;
end;
TJobList = class(TObject)
private
fJobs: TList;
public
function NewJob: TJob; virtual; // virtual = darf in abgeleiteten Klassen überschrieben werden
constructor Create;
destructor Destroy; override;
end;
Diese möchte ich nun folgendermaßen ableiten:
Delphi-Quellcode:
TBackupData = record
Name: string;
//...
end;
TBackupJob = class(TJob)
private
fBackupData: TBackupData;
public
property BackupData:TBackupData read fBackupData;
procedure Setup;
end;
TBackupList = class(TJobList)
private
//..
public
function NewJob: TBackupJob; override; // Compiler Fehler: Deklaration von NewJob unterscheidet sich von vorheriger Deklaration
end;
Überall wo dann in der JobList auf die einzelnen Jobs zugegriffen wird, steht TJob(fJobs[i]).MachWas. Das sollte ja eigentlich kein Problem darstellen, wenn fJobs[i] in diesem Fall kein TJob sondern ein davon abgeleiteter TBackupJob ist, oder?
Wie muss ich es denn machen, um den im Quelltext erwähnten Compilerfehler nicht zu bekommen?
Viele Grüße,
changlee.