Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Klasse mit abstrakter Methode

  Alt 6. Jan 2010, 16:35
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?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat