AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Abstrakte Klasse mit implementierten Methoden
Thema durchsuchen
Ansicht
Themen-Optionen

Abstrakte Klasse mit implementierten Methoden

Ein Thema von Nogge · begonnen am 3. Aug 2007 · letzter Beitrag vom 6. Aug 2007
Antwort Antwort
Seite 1 von 2  1 2      
Nogge

Registriert seit: 15. Jul 2004
336 Beiträge
 
Delphi 7 Professional
 
#1

Abstrakte Klasse mit implementierten Methoden

  Alt 3. Aug 2007, 11:32
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Abstrakte Klasse mit implementierten Methoden

  Alt 3. Aug 2007, 11:35
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.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#3

Re: Abstrakte Klasse mit implementierten Methoden

  Alt 3. Aug 2007, 11:37
Hrm. Deklariere doch einfach den Constructor als Abstrakt

Ansonsten bleibt Dir nichts über, als Methoden die Du eben nicht implementierst als Abstrakt zu setzen.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

Re: Abstrakte Klasse mit implementierten Methoden

  Alt 3. Aug 2007, 12:41
Zitat von mkinzler:
In Delphi gibt es eigentlich keine abstrakte Klassen, sondern nur Klassen mit abstrakten Methoden.
Die gibt es schon (seit Delphi 2006)
Delphi-Quellcode:
type
  TMyAbstractClass = class abstract(TMyBase)
  end;
Nur lässt dich der Compiler immernoch eine Instanz dieser Klasse (mit Warnung) erzeugen.
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Abstrakte Klasse mit implementierten Methoden

  Alt 3. Aug 2007, 12:56
Zitat von jbg:
Die gibt es schon (seit Delphi 2006)
Delphi-Quellcode:
type
  TMyAbstractClass = class abstract(TMyBase)
  end;
D'Oh!
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...
Robert Giesecke
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#6

Re: Abstrakte Klasse mit implementierten Methoden

  Alt 3. Aug 2007, 13:01
Hallo,
Zitat von Elvis:
Wer kommt schon auf die Idee es verkehrtrum zu schreiben...
in Delphi werden Modifier doch immer hinten ran gestellt. Ich hätte allerdings eher sowas erwartet:
Delphi-Quellcode:
type
  TMyAbstractClass = class(TMyBase)
  end abstract;
Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Nogge

Registriert seit: 15. Jul 2004
336 Beiträge
 
Delphi 7 Professional
 
#7

Re: Abstrakte Klasse mit implementierten Methoden

  Alt 3. Aug 2007, 13:04
Und ich habe kein Delphi 2006, wie Ihr vllt seht... :(
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#8

Re: Abstrakte Klasse mit implementierten Methoden

  Alt 3. Aug 2007, 13:23
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
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Nogge

Registriert seit: 15. Jul 2004
336 Beiträge
 
Delphi 7 Professional
 
#9

Re: Abstrakte Klasse mit implementierten Methoden

  Alt 3. Aug 2007, 13:26
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.
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Abstrakte Klasse mit implementierten Methoden

  Alt 3. Aug 2007, 14:21
Zitat von Nogge:
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.
Konstruktoren sind in Delphi komische Viecher.
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:
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);
Einen Konstruktor als Instanzmethode auszuführen ohne die Instanz vorher angelegt zu haben knallt natürlich...
Robert Giesecke
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11:43 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