![]() |
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:
Und
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;
Delphi-Quellcode:
Dann wird das ganze benutzt:
TStrafeInnen = class(TStrafe)
public procedure BerechneStrafe; reintroduce; end;
Delphi-Quellcode:
FStrafe ist vom Typ TStrafe.
procedure TBussgeld.BerechneStrafe;
begin case FInnerortsAusserorts of iaInnen: begin FStrafe := TStrafeInnen.Create(FDifGeschw); FStrafe.BerechneStrafe; end; iaAussen:; end; end; 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? |
Re: Klasse mit abstrakter Methode
Mein Tipp: Versuche mal override statt reintroduce ;)
|
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