Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Frage zu Abstrakter Klasse (https://www.delphipraxis.net/119311-frage-zu-abstrakter-klasse.html)

GroHae 24. Aug 2008 10:20


Frage zu Abstrakter Klasse
 
Hallo,

was hat das eigendlich für Auswirkungen, wenn ich eine Klasse als abstract definiere? Ich dachte bis jetzt, dass ich dann davon keine Instanz erstellen kann. So steht es auch in der Hilfe
Zitat:

Ist eine Klasse als abstract markiert, dann kann sie nicht direkt mit dem Konstruktor Create instantiiert werden
Wenn ich aber eine Klasse anlege:

Delphi-Quellcode:
  TTest = class abstract(TObject)
  private
    name : string;
  public
    constructor create(iName:string);
    procedure ZeigeName;
  end;
und sie dann so nutze:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  t : TTest;
begin
  t := TTest.create('Otto');
  t.ZeigeName;
  t.Free;
end;
dann klappt das.

Warum? Hab ich was falsch verstanden?

Grüße

Thomas

DeddyH 24. Aug 2008 10:26

Re: Frage zu Abstrakter Klasse
 
Also, ich persönlich erstelle mir immer einen abstrakten Konstruktor.

Phoenix 24. Aug 2008 10:29

Re: Frage zu Abstrakter Klasse
 
Äh, das ist etwas missverständlich.

Ab Delphi 2006 kann man eine Klasse als abstrakt markieren (das ging vorher nur auf Methoden).
Allerdings verhindert erst der Delphi 2007 Compiler, dass man eine abstrakte Klasse instanzieren kann.

GroHae 24. Aug 2008 10:59

Re: Frage zu Abstrakter Klasse
 
hm..

ich habe CodeGear™ Delphi® 2007 für Win32® R2 Version 11.0.2902.10471

es geht aber.

Aber unabhängig davon:

Eigendlich sollte es nicht gehen. Stimmts?

GroHae 24. Aug 2008 11:01

Re: Frage zu Abstrakter Klasse
 
Hab gerade mein Profiel angepaßt da stand noch D 2006

Hawkeye219 24. Aug 2008 12:03

Re: Frage zu Abstrakter Klasse
 
Hallo Thomas,

du hast alles richtig verstanden, nur die Compiler-Truppe bei Borland/CodeGear/Embarcadero hat es offenbar bis heute nicht verstanden, diesen Fehler zu beheben: QC-Eintrag

Gruß Hawkeye


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:34 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