Konstruktoren-Probleme.... Thema ist als GELÖST markiert

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
9 Beiträge Seite 1 von 1
9 Beiträge Seite 1 von 1

Konstruktoren-Probleme....

Beitrag von ralf.wenzel (Top Expert / 3420 / 150 / 221 ) » 21. Jun 2019 16:52

Moin,

ich baue ein Objekt der Klasse subcls, die von supercls erbt. Wir nehmen an, beide Klassen haben einen Constructor und eine Methode init. Wenn ich das Objekt subcls erzeuge, in dessen Constructor die Methode init aufgerufen wird, wird die init von supercls ausgeführt, nicht die von subcls.

Warum ist das so? Wie löse ich das Problem, dass ich bestimmte Dinge beim Objektebauen durchführen muss - und zwar klassenspezifisch (also die init von subcls).


Ralf

Hab gerade beiläufig einen Hinweis bekommen


Re: Konstruktoren-Probleme....

Beitrag von ewx (Top Expert / 3999 / 165 / 378 ) » 21. Jun 2019 17:35

Alles, was in der SUPER Klasse ausgeführt wird, geschieht auch in der SUPER-Klasse... Wenn beide Constructors einen INIT durchführen, dann wird der in der jeweiligen Klasse ausgeführt. Das ist IMHO mit ein Grund, weswegen man eigentlich so gut wie nichts im CONSTRUCTOR selbst durchführen sollte. Dafür gibt es dann ja die Erbauer-Entwurfsmuster, die sicherstellen, dass INIT-Routinen nach der Erzeugung ausgeführt werden.

Wenn sie im CONSTRUCTOR selbst aufgerufen werden, hat das evtl. zur Folge, dass in jeder Klasse teure Laufzeit verbraten wird, obwohl eigentlich nur die Sub-Sub-Klasse den Init durchführen müsste.

Re: Konstruktoren-Probleme....

Beitrag von ralf.wenzel (Top Expert / 3420 / 150 / 221 ) » 21. Jun 2019 19:06

Du hast den von mir verlinkten Artikel gelesen?


Ralf

Re: Konstruktoren-Probleme....

Beitrag von ewx (Top Expert / 3999 / 165 / 378 ) » 21. Jun 2019 19:50

Ja, ist schon länger her. Habe ihn eben nochmal gelesen.
Und auf was willst du hinaus?

Re: Konstruktoren-Probleme....

Beitrag von AdrianSchm (ForumUser / 33 / 4 / 4 ) » 24. Jun 2019 15:09

Gibt eine Möglichkeit das zu umgehen indem man in dem Konstruktor der Superklasse wieder auf die Subklasse Castet. Dann kannst du die Methoden der Subklasse aufrufen. Ist aber nicht schön. Programmiere aktuell nur noch mit Factorys und keine Parameter in den Konstruktoren.

Re: Konstruktoren-Probleme....

Beitrag von ewx (Top Expert / 3999 / 165 / 378 ) » 24. Jun 2019 15:26

AdrianSchm hat geschrieben:
24. Jun 2019 15:09
Gibt eine Möglichkeit das zu umgehen indem man in dem Konstruktor der Superklasse wieder auf die Subklasse Castet. Dann kannst du die Methoden der Subklasse aufrufen.
Wie soll das bitte gehen?
Hast du ein Beispiel dafür?

Re: Konstruktoren-Probleme....

Beitrag von black_adept (Top Expert / 3256 / 54 / 574 ) » 25. Jun 2019 13:17

AdrianSchm hat geschrieben:
24. Jun 2019 15:09
Gibt eine Möglichkeit das zu umgehen indem man in dem Konstruktor der Superklasse wieder auf die Subklasse Castet. Dann kannst du die Methoden der Subklasse aufrufen. Ist aber nicht schön. Programmiere aktuell nur noch mit Factorys und keine Parameter in den Konstruktoren.
Man kann innerhalb des Konstruktors nicht auf die Unterklasse casten. SAP gibt einem da sogar einen Kurzdump mit einer sehr! detaillierten Fehlermeldung, die noch mal das beschreibt was Ralf schon verlinkt hatte.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Konstruktoren-Probleme....

Beitrag von AdrianSchm (ForumUser / 33 / 4 / 4 ) » 25. Jun 2019 14:48

Kann das am Donnerstag nochmal nachschauen wie ich das Programmiert habe.

Grüße Adrian

Re: Konstruktoren-Probleme....

Beitrag von AdrianSchm (ForumUser / 33 / 4 / 4 ) » 7. Aug 2019 14:45

Sry hatte voll vergessen dazu noch was zu schreiben. Der Kunde bei welchem ich das entwickelt hat die Klasse auch schon wieder ausgetauscht weil das auch nen bisschen gepfuscht war aber es ging in etwa so. In den Konstruktor der Superklasse einfach einen optionalen Parameter von type ref Superclass welchen dann beim Aufruf des Konstruktors aus der Subklasse mit me übergibt. Dann kann in der Superklasse der Import Parameter auf die Subklasse gecastet werden.

Irgenwie so hat das funktioniert.

Grüße Adrian

Seite 1 von 1

Aktuelle Forenbeiträge

Join über mehrere Tabellen sehr langsam
vor einer Stunde von deejey 1 / 4
Ermittlung interner/externer Mitarbeiter
vor 4 Stunden von deejey 3 / 43
Excel OLE2 Blatt schützen gelöst
vor 16 Stunden von Kerstin 5 / 60
Wann wird VBFA-MATNR gefüllt? gelöst
vor 16 Stunden von deejey 3 / 61
VL10B - Partner ändern -> Funktionsbaustein?
Gestern von black_adept 2 / 50

Unbeantwortete Forenbeiträge

Join über mehrere Tabellen sehr langsam
vor einer Stunde von deejey 1 / 4
SP01 Verweildauer
vor 4 Tagen von SAP_ENTWICKLER 1 / 73
Transaktion OMT3B Subscreens in Dynpros einhängen
vor 5 Tagen von SAP_ENTWICKLER 1 / 53
Zeitereignisarten anlegen
vor einer Woche von Flashtie 1 / 164
Genehmiger & Status der Genehmigung bei einer BANF
vor 3 Wochen von Der Formulator 1 / 238