Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Müssen abstrakte Methoden implementiert werden?
matze - Mi 20.10.10 23:08
Titel: Müssen abstrakte Methoden implementiert werden?
Hallo.
Ich habe eine Eltern-Klasse mit einer abstrakten Methode. Die davon abgeleiteten Klassen implementieren nun diese Methode, ganz wie es sein soll.
Nun kam es aber vor, dass ich (blöd wie ich bin) bei einer Klasse vergessen habe, eine abstrakte Methode auszuführen.
Der Compiler hat nicht gemeckert und das kommt mir komisch vor.
Ich weiß jetzt nicht, ob ich das mit anderen Programmiersprachen durcheinander bringe, aber ich dachte immer, abstrakte Methoden müssen in den abgeleiteten Klassen immer zwingend implementiert werden? Oder bin ich da auf dem Holzweg.
Matze
delfiphan - Mi 20.10.10 23:10
Delphi gibt nur eine Warnung aus. Zur Laufzeit gibt's beim Aufruf eine EAbstractError.
bummi - Mi 20.10.10 23:12
Knallt zur Laufzeit...
Martok - Mi 20.10.10 23:33
Also ich bekomme eine Meldung.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| type TAbs = class procedure Test; virtual;abstract; end;
TDes = class(TAbs) end;
procedure TForm1.Button1Click(Sender: TObject); var a: TDes; begin a:= TDes.Create; try finally a.free; end; end; |
Quelltext
1:
| [Warnung] Unit1.pas(39): Instanz von 'TDes' mit der abstrakten Methode 'TAbs.Test' wird angelegt |
matze - Do 21.10.10 10:48
bummi hat folgendes geschrieben : |
| Knallt zur Laufzeit... |
Ja ganz genau. Das ist ja das Blöde.
Und ja: Stimmt, man bekommt ne Meldung, allerdings nur ne Warnung. Ich dachte, dass das dann einfach nicht kompilliert...
Und die Warnung ist blöderweise auch nicht immer zu sehen.
Danke trotzdem an alle!
Lemmy - Do 21.10.10 10:57
Hi,
hier stellt Delphi dem Entwickler wohl zu, selbst seinen Code ausreichend zu kennen. Ich glaube in C# wäre so was nicht möglich zu kompilieren.
Hier habe ich mir inzwischen angewöhnt, wenn ich eine Klasse ableite bei der Definition STRG+Leertaste zu drücken. In der Liste werden abstrakte Methode alle in roter Schrift aufgeführt, und die haue ich dann alle gleich in die Klasse rein....
matze - Do 21.10.10 11:03
Ahhh. Guter Tipp.
Danke!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!