Ich habe eine Elternklasse mit einer abstrakten Methode und eine davon abgeleitet Kindklasse in der die abstrakte Methode implementiert wird:
Delphi-Quellcode:
TStrafe = class (TObject)
private
FDifGeschW: Cardinal;
FBussgeld: Cardinal;
FPunkte: Cardinal;
FMonateFahrverbot: Cardinal;
function GetGeschw: Cardinal;
procedure SetGeschw(value: Cardinal);
public
Constructor Create(ADifGeschw: Cardinal);
procedure BerechneStrafe; virtual; abstract;
property DifGeschw: Cardinal read GetGeschw write SetGeschw;
property Bussgeld: Cardinal read FBussgeld;
property Punkte: Cardinal read FPunkte;
property MonateFahrverbot: Cardinal read FMonateFahrverbot;
end;
Und
Delphi-Quellcode:
TStrafeInnen = class(TStrafe)
public
procedure BerechneStrafe; reintroduce;
end;
Dann wird das ganze benutzt:
Delphi-Quellcode:
procedure TBussgeld.BerechneStrafe;
begin
case FInnerortsAusserorts of
iaInnen:
begin
FStrafe := TStrafeInnen.Create(FDifGeschw);
FStrafe.BerechneStrafe;
end;
iaAussen:;
end;
end;
FStrafe ist vom Typ
TStrafe.
Was jetzt passiert ist folgendes: Beim Aufruf von
FStrafe.BerechneStrafe kommt es zu einer
Exception mit der Meldung: "Abstrakter Fehler". Warum das?
FStrafe ist zwar vom Typ
TStrafe, aber instantiieren tue ich doch
TStrafeInnen?