![]() |
Abstracte Klasse hier richtig?
Hallo!
ich hab im prinzip folgenden Aufbau
Delphi-Quellcode:
Alle von TFigure abgeleiteten Klassen sollen die Methode Draw implementieren, TFigure selbst hat aber keine implementierung für Draw.
type
TFigure = class procedure Draw; virtual; abstract; end; TRectangle = class(TFigure) procedure Draw; override; end; TEllipse = class(TFigure) end; Aber statt dass jetzt ein Fehler kommt, dass Tellipse die Methode Draw implementieren müsste, kann ich die Draw-Methode von TFigure benutzen die nichtmal existiert. Also ich kann Ellipse.Draw ausführen, es kommt dann aber erst zur Laufzeit ein fehler. Sollte da nicht schon beim Compilieren ein Fehler kommen "TEllipse: Die Implementierung von Draw fehlt"? Was mach ich falsch? Güße blablab |
Re: Abstracte Klasse hier richtig?
Nichts. Das ist in Delphi einfach so. Das Instanziieren einer Ellipse müsste allerdings eine Warnung hervorrufen.
|
Re: Abstracte Klasse hier richtig?
Das ist as-designed. In neuren Delphiversionen kann man das von anderen Sprachen bekannte Verhalten aber provozieren, indem man die Klasse als abstrakt deklariert.
|
Re: Abstracte Klasse hier richtig?
Man könnte auch ein Interface draus machen. Da sollte er meckern wenn die Klasse das Interface nicht komplett implementiert ;)
|
Re: Abstracte Klasse hier richtig?
Woher soll denn der Compiler wissen, ob eventuell zur Laufzeit nicht doch noch die fehlende Methode "nachgerüstet" wird usw. ? :shock:
|
Re: Abstracte Klasse hier richtig?
@jfheins: wie geht das???
@Hansa: ist sowas möglich? |
Re: Abstracte Klasse hier richtig?
Zitat:
Wenn ich hier sowas mache, kommt das hier: Zitat:
|
Re: Abstracte Klasse hier richtig?
[OT]
Zitat:
[/OT] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 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