Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Klasse mit abstrakter Methode (https://www.delphipraxis.net/145692-klasse-mit-abstrakter-methode.html)

Luckie 6. Jan 2010 15:35


Klasse mit abstrakter Methode
 
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?

jfheins 6. Jan 2010 15:38

Re: Klasse mit abstrakter Methode
 
Mein Tipp: Versuche mal override statt reintroduce ;)

Luckie 6. Jan 2010 15:39

Re: Klasse mit abstrakter Methode
 
Herrgottsakra!

Das hätte auch in der Hilfe stehen können. Danke, jetzt geht's.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz