![]() |
Abstrakte Klasse mit implementierten Methoden
Hallo Community,
In Java gibt's abstrakte Klassen, die man nicht direkt erstellen kann. Erst durch's Erstellen einer normalen Klasse, die die abstrakte Klasse erweitert, ist es möglich, auf die Methoden und Attribute der abstrakten Klassen zuzugreifen. Interfaces erlauben nur public-Zugriffsrechte und sind dafür auch nicht gedacht. Kann mir jemand sagen, wie dies in Delphi zu realisieren ist? mfg nogge |
Re: Abstrakte Klasse mit implementierten Methoden
In Delphi gibt es eigentlich keine abstrakte Klassen, sondern nur Klassen mit abstrakten Methoden. man kann also Instanzen erzeugen und auch auf die nicht-abstrakten Methoden zugreifen.
|
Re: Abstrakte Klasse mit implementierten Methoden
Hrm. Deklariere doch einfach den Constructor als Abstrakt ;-)
Ansonsten bleibt Dir nichts über, als Methoden die Du eben nicht implementierst als Abstrakt zu setzen. |
Re: Abstrakte Klasse mit implementierten Methoden
Zitat:
Delphi-Quellcode:
Nur lässt dich der Compiler immernoch eine Instanz dieser Klasse (mit Warnung) erzeugen.
type
TMyAbstractClass = class abstract(TMyBase) end; |
Re: Abstrakte Klasse mit implementierten Methoden
Zitat:
Ich hatte es mit "abstract class" probiert und dann angenommen, dass es einfach immer noch nicht geht. Wer kommt schon auf die Idee es verkehrtrum zu schreiben... :gruebel: |
Re: Abstrakte Klasse mit implementierten Methoden
Hallo,
Zitat:
Delphi-Quellcode:
Gruß
type
TMyAbstractClass = class(TMyBase) end abstract; xaromz |
Re: Abstrakte Klasse mit implementierten Methoden
Und ich habe kein Delphi 2006, wie Ihr vllt seht... :(
|
Re: Abstrakte Klasse mit implementierten Methoden
Wie gesagt: deklariere den constructor als abstrakt. Ich habs jetzt nicht ausprobiert, aber das dürfte dazu führen dass die Klasse selber nicht mehr instanziert werden kann :)
|
Re: Abstrakte Klasse mit implementierten Methoden
Aso, vergessen zu erwähnen: Man kann den Konstruktor dann zwar nicht mehr mit nem "." auswählen, allerdings akzeptiert der Compiler <Instance>.Create() als ganzes.
|
Re: Abstrakte Klasse mit implementierten Methoden
Zitat:
Du kannst sie als Class methods ausführen: Also Deineklasse.Create; aber auch als Instance methods. Im ersten Fall wird eine neue Instanz angelegt, im zweiten Fall wird der Initialisierungs-Code des Konstruktors auf die Instanz ausgeführt.
Delphi-Quellcode:
Einen Konstruktor als Instanzmethode auszuführen ohne die Instanz vorher angelegt zu haben knallt natürlich...
type
TSomeClass = class public Hiho : Integer; constructor Create; end; constructor TSomeClass.Create; begin Hiho := 2; end; var obj : TSomeClass; begin obj := TSomeClass.Create(); obj.Hiho := 1; obj.Create(); // geht und wiederholt was immer Create mit der Instanz gemacht hat Writeln(obj.Hiho); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:27 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 by Thomas Breitkreuz