Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   class abstract Definition (https://www.delphipraxis.net/192354-class-abstract-definition.html)

Rollo62 11. Apr 2017 14:28

class abstract Definition
 
Hallo zusammen,

ich frage mich mal wieder generell, wie wird class abstract benutzt.
Hier ist die Definition von Emba
Zitat:

className = class [abstract | sealed] (ancestorClass)
memberList
end;
Z.B. hier ist es so angewendet, aber auch alle Methoden müssen wohl abstract sein.

Aber wozu sollte ich dann
Delphi-Quellcode:
className = class abstract
setzen ?
Ich habe schon geforscht, aber dazu gibt es nicht viel Info anscheinend.
So wie ich das bis jetzt sehe
- reichen die abstrakten Methoden der Klasse um sie abstrakt zu machen, und es ist nicht nötig im Klassennheader
- die Definition nur im Klassenheader reicht aber auch nicht um alle Methoden abstract zu machen

Also wozu sollte ich class abstract dann gut sein, zum doppel-moppeln ?

Wer kann mir da auf die Sprünge helfen wozu ich "class abstract" benutzen sollte ?

Rollo

Zacherl 11. Apr 2017 14:41

AW: class abstract Definition
 
Das
Delphi-Quellcode:
class abstract
ist in Delphi mehr ein Hinweis. Es erspart dir nicht, die Methoden zusätzlich als
Delphi-Quellcode:
abstract
zu kennzeichnen. Tatsächlich habe ich absolut gar keine Auswirkungen feststellen können (ich hatte vor dem Testen die Theorie, dass Delphi schon zur Compile-Time einen Fehler schmeißt, wenn man versucht Instanzen einer abstrakten Klasse zu erstellen).
Delphi-Quellcode:
class sealed
auf der anderen Seite verhindert tatsächlich schon zur Compile-Time, dass man von der Klasse ableiten kann.

mkinzler 11. Apr 2017 14:43

AW: class abstract Definition
 
Diese Option richtet sich an Entwickler aus anderen Sprachen, bei denen Klassen abstrakt sind, sobald eine Methode das ist. In Delphi ist das nun mal nicht so. Das sehe ich als Vorteil andere als eine Riesenmanko. Mit dieser kleinen Erweiterung der Sprache kann man das Verhalten erzwingen.

Fritzew 11. Apr 2017 14:46

AW: class abstract Definition
 
Wenn ich mich richtig erinnere wurde das zu Delphi-Net Zeiten eingeführt.....
Ist wohl noch ein Überbleibsel aus der NET Welt.

Rollo62 12. Apr 2017 17:55

AW: class abstract Definition
 
Ok, dankesehr für die erleuchtenden Antworten.
Ich dachte schon das ich hier das Prinzip nicht richtig verstehe.

Rollo

Stevie 12. Apr 2017 20:41

AW: class abstract Definition
 
In C# kann man von abstrakten Klassen keine Instanzen erzeugen, leider haben sie diese Restriktion niemals in den Delphi Compiler eingebaut (der für .NET konnte das wohl) :(

Ist auch schon lange reported: https://quality.embarcadero.com/browse/RSP-10235


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:40 Uhr.

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