Autor Beitrag
Venja Lojox
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 16.02.10 15:54 
Ich möchte für ein Projekt eine "abstrakte Klasse" erstellen. Sie nennt sich Zeichnung und ist von TObject abgeleitet
Die Methode Create ist hier nun abstrakt.

Nun will ich aber in der Unterklasse TLinie von diesem create ein TLinie.Create erben. dementsprechend bräuchte ich ja den aufruf
inherited Create

Nun ist aber ja das wovon ich erbe LEER, ich hab dort kein inherited create stehen.
Die Frage ist, ob ich dennoch die Prozedur von TObject erbe, die mich hier ja interessiert

also: kriege ich durch den inherited Aufruf die Festelgungen von TObject und wenn nicht, geht das überhaupt mit einer abstrakten Klasse, dass ich diese ""Vererbungsstruktur"" beibehalte?
martin300
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 186
Erhaltene Danke: 2



BeitragVerfasst: Di 16.02.10 17:41 
Hallo,
Zitat:

Ich möchte für ein Projekt eine "abstrakte Klasse" erstellen. Sie nennt sich Zeichnung und ist von TObject abgeleitet.

In Delphi gibt es meiner Meinung nach keine abstrakte Klasse. Es gibt nur abstrakte Methoden oder ein Interface (siehe: www.delphi-treff.de/...t-pascal/interfaces/ ).
Ein Interface verhält sich ähnlich wie eine abstrakte Klasse.
Zitat:

Die Methode Create ist hier nun abstrakt.

Da es von TObject abgeleitet ist, gibt es auch den Konstruktur "create".
Venja Lojox Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 16.02.10 18:36 
Mir ist wohl klar, dass die Methode da ist. Wahrscheinlich habe ich es falsche formuliert. Ich habe jetzt doe Klassendefinition von

ausblenden Delphi-Quelltext
1:
2:
3:
TZeichnung = class(TObject)
 constructor Create(....); virtualabstract;
 destructor Destroy; virtualabstract;

davon abgeleitet dann TLinie
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
TLinie = class(TZeichnung)
 constructor Create(...); override;
 destructor Destroy; override;
.
.
.
constructor TLinie.Create(...);
begin
 inherited Create(...);
 ...
end;

So, ich möchte nun wissen, ob ich durch DIESEN inherited Aufruf die Eigenschaft von TObject erbe, einen speicherplatz zu reserviere (oder was auch immer da weiter passiert), da ja Create in der Oberklasse LEER existiert
Oder anders: Erbe ich mit dem inherited überhaupt was?

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
martin300
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 186
Erhaltene Danke: 2



BeitragVerfasst: Di 16.02.10 19:22 
Am besten das ganze eingeben und mehrmals die F7 Taste drücken. Dann wirst du sehen das dieser Code so nicht funktioniert.
ausblenden Delphi-Quelltext
1:
inherited Create(...);					

ruft nur den Konstruktor des Vorgängers auf. Dein Vorgänger ist als
ausblenden Delphi-Quelltext
1:
constructor Create(....); virtualabstract;					

definiert. Was soll da Delphi machen? - Abstrakte Klassen gibt es nicht. Du musst es zulassen eine Instanz zu erzeugen - dann klappt es auch mit der Vererbung.