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 / 3474 / 155 / 224 ) » 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 / 4088 / 179 / 403 ) » 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 / 3474 / 155 / 224 ) » 21. Jun 2019 19:06

Du hast den von mir verlinkten Artikel gelesen?


Ralf

Re: Konstruktoren-Probleme....

Beitrag von ewx (Top Expert / 4088 / 179 / 403 ) » 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 / 4088 / 179 / 403 ) » 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 / 3319 / 60 / 605 ) » 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

Interne Tabelle um Felder aus SAP-Tabelle ergänzen
vor 15 Stunden von DeathAndPain 4 / 47
F4-Hilfe bei Parameters
vor 16 Stunden von deejey 4 / 78
Userexit für IDOC für Bestellung
vor 16 Stunden von deejey 3 / 38

Unbeantwortete Forenbeiträge

Unterschiedliche Konditionen AB und Rechnungdruck
vor 2 Tagen von Sebastian82 1 / 61
Änderungsbelege für Kundenfelder im BP
vor 6 Tagen von GerryRe 1 / 1996
Anlegen eines externen Dokumentes(URL) für PM-Auftrag
vor einer Woche von tekko 1 / 2010
Transaktionen MEIS / VE01
vor einer Woche von SAP_ENTWICKLER 1 / 2466