AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

class abstract Definition

Ein Thema von Rollo62 · begonnen am 11. Apr 2017 · letzter Beitrag vom 12. Apr 2017
Antwort Antwort
Rollo62

Registriert seit: 15. Mär 2007
3.914 Beiträge
 
Delphi 12 Athens
 
#1

class abstract Definition

  Alt 11. Apr 2017, 14:28
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 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
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: class abstract Definition

  Alt 11. Apr 2017, 14:41
Das class abstract ist in Delphi mehr ein Hinweis. Es erspart dir nicht, die Methoden zusätzlich als 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). class sealed auf der anderen Seite verhindert tatsächlich schon zur Compile-Time, dass man von der Klasse ableiten kann.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: class abstract Definition

  Alt 11. Apr 2017, 14:43
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.
Markus Kinzler
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: class abstract Definition

  Alt 11. Apr 2017, 14:46
Wenn ich mich richtig erinnere wurde das zu Delphi-Net Zeiten eingeführt.....
Ist wohl noch ein Überbleibsel aus der NET Welt.
Fritz Westermann
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.914 Beiträge
 
Delphi 12 Athens
 
#5

AW: class abstract Definition

  Alt 12. Apr 2017, 17:55
Ok, dankesehr für die erleuchtenden Antworten.
Ich dachte schon das ich hier das Prinzip nicht richtig verstehe.

Rollo
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.009 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: class abstract Definition

  Alt 12. Apr 2017, 20:41
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
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:54 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