Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Abstrakter Fehler bei Instanzenübergabe (https://www.delphipraxis.net/73556-abstrakter-fehler-bei-instanzenuebergabe.html)

Khabarakh 20. Jul 2006 12:22

Re: Abstrakter Fehler bei Instanzenübergabe
 
Zitat:

Zitat von mkinzler
Zitat:

Nun ja, eben ganze Klassen Wink .
Laut Theorie ist eine klasse abstrakt, wenn mindestens eine Methode abstrakt ist, daß ist klar. Delphi unterscheidet halt noch zwischen abstrakt und vollständig abstrakt. Von normalen abstrakte Klassen (Klassen mit nicht-abstrakten Methoden) lassen sich Intanzen bilden. Andere Sprachen verweigern dies.

Ich bezog mich auf die Kennzeichnung eines abstrakten Typs/Members, sonst wäre ja schon Dax' Aussage falsch gewesen, da es eben wie du sagst der Theorie nach auch in Delphi abstrakte Klassen gibt. Das abstract-Keyword wird aber (bislang und mit Win32) nur bei Methoden zugelassen.
Von deinen voll- und halbabstrakten Klassen habe ich aber noch nie etwas gehört :gruebel: .

mkinzler 20. Jul 2006 12:42

Re: Abstrakter Fehler bei Instanzenübergabe
 
Zitat:

Von deinen voll- und halbabstrakten Klassen habe ich aber noch nie etwas gehört Grübelnd... .
Gibt es auch nicht.
In der OOP-Theorie sind Klassen abstrakt, soweit sie eine abstrakte Methode besitzen. Man kann dann keine Instanzen davon bilden. In Delphi schon. Das wollte ich damit ausdrücken.

MaBuSE 20. Jul 2006 12:45

Re: Abstrakter Fehler bei Instanzenübergabe
 
Zitat:

Zitat von Dax
Zitat:

Zitat von mkinzler
Was außer Methoden kann noch abstrakt sein?

Properties - wenn man von Delphi weggeht und sich zb. Chrome ankuckt. Dort gehen auch so nette Sachen wie
Delphi-Quellcode:
property Foo: string; read; abstract;

Das kannst du doch (über Umwege) auch in Delphi machen:

Delphi-Quellcode:
type
  TMyDing = class(TObject)
  private
    { Private-Deklarationen }
    function GetDing: string; virtual; abstract;
    procedure SetDing(const Value: string); virtual; abstract;
  public
    { Public-Deklarationen }
    property Ding: string read GetDing write SetDing;
  end;
Damit muß in Nachfahre nur die Get und Set Methode implementiert werden und fertig.

Edit: OT: Das ist mein 1000. Beitrag

Khabarakh 20. Jul 2006 12:59

Re: Abstrakter Fehler bei Instanzenübergabe
 
Zitat:

Zitat von mkinzler
Zitat:

Von deinen voll- und halbabstrakten Klassen habe ich aber noch nie etwas gehört Grübelnd... .
Gibt es auch nicht.
In der OOP-Theorie sind Klassen abstrakt, soweit sie eine abstrakte Methode besitzen. Man kann dann keine Instanzen davon bilden. In Delphi schon. Das wollte ich damit ausdrücken.

Das hat aber nichts mit der Anzahl der nichtvirtuellen Methoden zu tun.
Auch in anderen Sprachen ist mir soetwas nicht bekannt, schließlich sind dort schon "halb-abstrakte Klassen" nicht mehr instanzierbar.
Zitat:

Delphi unterscheidet halt noch zwischen abstrakt und vollständig abstrakt. Von normalen abstrakte Klassen (Klassen mit nicht-abstrakten Methoden) lassen sich Intanzen bilden.
@Mabuse: Nichts anderes macht der Chrome-Compiler daraus ;) . Es ist also wirklich nur eine kleine Schreibersparniss, keine neue Form von abstrakten Membern.

mkinzler 20. Jul 2006 13:15

Re: Abstrakter Fehler bei Instanzenübergabe
 
Zitat:

Das hat aber nichts mit der Anzahl der nichtvirtuellen Methoden zu tun.
Ich dachte Delphi würde in diesem Fall ein Fehler ausgeben.
Ein Interface ist eine Art vollständig abstrakte Klasse ( ohne Attribute).


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:44 Uhr.
Seite 2 von 2     12   

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