http://help.sap.com/saphelp_470/helpdata/de/dd/4049c40f4611d3b9380000e8353423/content.htm hat geschrieben:...
Redefinition von Methoden
Jede Unterklasse enthält die Komponenten aller Klassen, die im Vererbungsbaum zwischen ihr und dem Wurzelknoten liegen. Die Sichtbarkeit einer Komponente ist immer gleich und kann nicht geändert werden. Es besteht aber die Möglichkeit, die öffentlichen und geschützten Instanzmethoden aller vorangehenden Oberklassen mit dem Zusatz REDEFINITION der Anweisung METHODS zu redefinieren, um sie an die gewünschte Spezialisierung anzupassen. Dabei kann die Schnittstelle einer redefinierten Methode nicht verändert werden. Die Methode wird lediglich unter gleichem Namen neu implementiert.
Die Deklaration der Methode liegt weiterhin bei der Oberklasse und auch ihre vorhergehende Implementierung bleibt dort erhalten. Die Implementierung der Redefinition wird bei der Unterklasse zusätzlich erzeugt und verschattet die Implementierung der Oberklasse.
...
Hallo,tseng hat geschrieben:Genau dies ist mein Ziel, weitere Attribute an eine redefinierte Methode anhängen. Nur wie funktioniert das genazu? Sobald ich in die Attributansicht der redefinierten Methode gehe, kommt eine Meldung, womit dann auch der Änderungsmodus "deaktiviert" wird.
Bitte an die Tafel stellen und 100x schreiben "Attribute gehören zur Klasse, nicht zu einer Methode".tseng hat geschrieben:Genau dies ist mein Ziel, weitere Attribute an eine redefinierte Methode anhängen. Nur wie funktioniert das genazu? Sobald ich in die Attributansicht der redefinierten Methode gehe, kommt eine Meldung, womit dann auch der Änderungsmodus "deaktiviert" wird.
Erweiterung der Signatur einer redefinierten Methode darf man nicht in ABAP, und das heißt Überladen (overloading). ABAP ununterstützt das nicht. Aber was kannst du machen um die Signatur einer Methode zu erweitern!, Du kannst einfach optionale Parameter in der Überklasse erweitern und in der Unterklasse verwenden.tseng hat geschrieben:HI,
ja sorry, mein Fehler. Mir geht es genau um die Erweiterung der Signatur einer Methode (weitere Importparameter anhängen). Nicht die Attribute einer Klasse.
Aber wie ich anhand der Antworten erkennen konnte, ist es nicht möglich die Parameter einer Methode in der SubKlasse zu erweitern.
Danke und sorry für die missverständliche Ausdrucksweise
Oder als (einzigen) Parameter in der Methoden-Schnittstelle ein Interface (als Parametertyp) verwenden. Dieses Interface definiert alle notwendigen "Parameter" für die korrekte Verarbeitung der Methode als Attribute oder über SET-/GET-Methoden. Durch die implementierende Klasse kann man dann die so übergebenen "Parameter" noch verändern oder mehr "Parameter" an die aufgerufene Methode übergeben. In der redefinierten Methode muss man so nur noch den Parameter aus der Schnittstelle auf die benötigte Klasse umwandeln (casten) und schon man kann die zusätzlichen "Parameter" aus der implementierenden Klasse nutzen.ibo hat geschrieben:Erweiterung der Signatur einer redefinierten Methode darf man nicht in ABAP, und das heißt Überladen (overloading). ABAP ununterstützt das nicht. Aber was kannst du machen um die Signatur einer Methode zu erweitern!, Du kannst einfach optionale Parameter in der Überklasse erweitern und in der Unterklasse verwenden.
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
ibo
DAS ist dann aber schon die hohe Schule - das kriegen viele Entwickler nichtmal als Benutzer der Klasse kapierta-dead-trousers hat geschrieben:Oder als (einzigen) Parameter in der Methoden-Schnittstelle ein Interface (als Parametertyp) verwenden.
Ich hab das jetzt in letzter Zeit schon bei einigen Neuentwicklung von SAP bzw. unserem Modul-Verantwortlichen (Cerner) gesehen.ralf.wenzel hat geschrieben:DAS ist dann aber schon die hohe Schule - das kriegen viele Entwickler nichtmal als Benutzer der Klasse kapierta-dead-trousers hat geschrieben:Oder als (einzigen) Parameter in der Methoden-Schnittstelle ein Interface (als Parametertyp) verwenden.
Hmm - ich finde das eigentlich gar nicht so schön. Es erfüllt sicherlich den Zweck, aber auch wenn SAP das selber verwendet zeigt das nur, dass sie selber das Overloading vermissen bzw. sich nur so zu behelfen wissen.a-dead-trousers hat geschrieben: Oder als (einzigen) Parameter in der Methoden-Schnittstelle ein Interface (als Parametertyp) verwenden. Dieses Interface definiert alle notwendigen "Parameter" für die korrekte Verarbeitung der Methode als Attribute oder über SET-/GET-Methoden.