Methode Überschreiben Rückgabe Ändern

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

Methode Überschreiben Rückgabe Ändern

Beitrag von SaskuAc (Specialist / 321 / 37 / 43 ) »
Hallo zusammen,

ich habe in meinem programm eine abstrakte klasse von der erben zwei klassen.
in einer Methode kommt zwar das gleiche verhalten allerdings ist der rückgabe typ anders..

nun wollte ich euch fragen, ob es möglich ist wenn ich eine Methode abstract definiere dass ich dann irgendwie den rückgabe typ der methode ändern kann ( da beide klassen andere typen haben ^^ )


Abstrakte Klasse:

Code: Alles auswählen.

CLASS test_Class DEFINITION ABSTRACT.

  PUBLIC SECTION.

     METHODS: select_data ABSTRACT. 

ENDCLASS. 

1. Subklasse:

Code: Alles auswählen.

CLASS test_Sub_Class DEFINITION INHERITING FROM test_Class.

  PUBLIC SECTION.

     METHODS: select_data REDEFINITION EXPORTING ex_data type my_type. 

ENDCLASS. 

2. Subklasse:

Code: Alles auswählen.

CLASS test_2_Sub_Class DEFINITION INHERITING FROM test_Class.

  PUBLIC SECTION.

     METHODS: select_data REDEFINITION EXPORTING ex_data type my_2_type. 

ENDCLASS. 

Ist etwas derartiges möglich? Ist, wenn vielleicht nicht im fall von abstrakten Methoden ( auch wenn das jetzt nicht das problem sein sollte ), es generell möglich diesen datentyp zu ändern?



Danke euch.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Methode Überschreiben Rückgabe Ändern

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Nein, eine Änderung der Schnittstelle einer Methode ist bei Ableitungen nicht möglich.
Das ist meines Wissens in keiner Programmiersprache möglich. In Java und C zum Beispiel sieht es nur so aus als ob man die Schnittstelle verändert, aber streng genommen handelt es sich dann immer um eine neue Methode weil die Schnittstelle Teil der Definition ist. Das gibt es in ABAP leider nicht, da nur der Methodennamen als Definition gilt.

Zwei Möglichkeiten zur Problemlösung würden mir einfallen:
1) Mit zwei Interfaces arbeiten und dort einmal die Methode mit Schnittstelle X und einmal mit Schnittstelle Y definieren. Der Aufrufer muss dann per Casting prüfen welcher der beiden Methoden im Objekt zu Verfügung steht.
2) Mit einem Objekt als Rückgabe arbeiten. In diesem kann man dann die notwendigen Daten z.B. generisch kapseln oder die verscheidenen Rückgabeobjekte wieder eine Hierachie verpacken.

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Methode Überschreiben Rückgabe Ändern

Beitrag von SaskuAc (Specialist / 321 / 37 / 43 ) »
Schade, aber naja kann man nix machen. ^^

Danke dir! werde dann wahrscheinlich die zweite variante nehmen, gestaltet sich in meinem programm besser ^^

Re: Methode Überschreiben Rückgabe Ändern

Beitrag von erp-bt (Specialist / 163 / 4 / 21 ) »
Hallo,

warum nimmst Du denn nicht einfach einen generischen Datentyp? Z.B.

Code: Alles auswählen.

METHODS select_data ABSTRACT EXPORTING ex_data TYPE REF TO OBJECT.
oder

Code: Alles auswählen.

METHODS select_data ABSTRACT EXPORTING ex_data TYPE STANDARD TABLE.
Viele Grüße, Tapio
...entwickelnder Berater...beratender Entwickler

Re: Methode Überschreiben Rückgabe Ändern

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Hallo SaskuAc,

wenn die aufrufende Codestelle weiß um welche der beiden Klassen es sich handelt, weil ja eine "passende" Variable das Ergebnis des Exporting-Parameters empfangen soll, würde ich a-d-ts 1. Vorschlag verwenden. Wenn ein wenig generisch ist, lass dir über eine (neue) Methode den für diese Klasse relevanten Methodennamen zurückgeben und ruf dann dynamisch die "richtige" Methode auf

Wenn das Ganze sehr generisch ist und/oder die aufrufende Stelle gar nicht weiß, was nachher rauskommen wird würde ich erp-bts Vorschlag verwenden und die Schnittstelle auch generisch halten. Je nachdem was zurückkommen ein REF TO OBJECT oder REF TO DATA oder gar ANY.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Vergleichbare Themen

5
Antw.
1518
Views
Dokumentation überschreiben?
von Lukas R. » 22.11.2017 09:27 • Verfasst in ABAP® für Anfänger
6
Antw.
3063
Views
Eingabefeld überschreiben.
von Grey_M » 21.09.2005 16:29 • Verfasst in ABAP® für Anfänger
3
Antw.
1451
Views
Überschreiben von Merkmalswerten
von HaXor » 15.02.2007 10:41 • Verfasst in ABAP® Core
3
Antw.
4547
Views
Verbuchungsbaustein - Rückgabe?
von xJeNnYx » 21.09.2009 14:53 • Verfasst in ABAP® für Anfänger
2
Antw.
2883
Views
JCO - Rückgabe an SAP Dateiinhalt
von steffi_ma » 22.12.2004 14:40 • Verfasst in Java & SAP®

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 107
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 140