Suche…


Klassenerklärung

ABAP-Klassen können global oder lokal deklariert werden. Eine globale Klasse kann von jedem Objekt innerhalb des ABAP-Repositorys verwendet werden. Im Gegensatz dazu kann eine lokale Klasse nur innerhalb des angegebenen Bereichs verwendet werden.

CLASS lcl_abap_class DEFINITION.
  PUBLIC SECTION.
  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.

CLASS lcl_abap_class IMPLEMENTATION.
ENDCLASS.

Konstruktor, Methoden

Klassenimplementierung:

CLASS lcl_abap_class DEFINITION.
  PUBLIC SECTION.
    METHODS: constructor,
             method1.
  PROTECTED SECTION.
  PRIVATE SECTION.
    METHODS: method2,
             method3.
ENDCLASS.

CLASS lcl_abap_class IMPLEMENTATION.
    METHOD constructor.
        "Logic
    ENDMETHOD.

    METHOD method1.
        "Logic
    ENDMETHOD.

    METHOD method2.
        "Logic
        method3( ).
    ENDMETHOD.

    METHOD method3.
        "Logic
    ENDMETHOD.
ENDCLASS.

Beispiel für Methodenaufruf:

DATA lo_abap_class TYPE REF TO lcl_abap_class.
CREATE OBJECT lo_abap_class. "Constructor call
lo_abap_class->method1( ).

Methode mit Parametern (Importieren, Ändern, Exportieren)

Klassenimplementierung:

CLASS lcl_abap_class DEFINITION.
  PRIVATE SECTION.
    METHODS method1 IMPORTING iv_string TYPE string
                     CHANGING cv_string TYPE string
                    EXPORTING ev_string TYPE string.
ENDCLASS.

CLASS lcl_abap_class IMPLEMENTATION.
    METHOD method1.
        cv_string = iv_string.
        ev_string = 'example'.
    ENDMETHOD.
ENDCLASS.

Beispiel für Methodenaufruf:

method1 (
  EXPORTING iv_string = lv_string
  IMPORTING ev_string = lv_string2
   CHANGING cv_string = lv_string3
).

Methode mit zurückkehrendem Parameter

Klassenimplementierung:

CLASS lcl_abap_class DEFINITION.
  PRIVATE SECTION.
    METHODS method1 RETURNING VALUE(rv_string) TYPE string.
ENDCLASS.

CLASS lcl_abap_class IMPLEMENTATION.
    METHOD method1.
        rv_string = 'returned value'.
    ENDMETHOD.
ENDCLASS.

Beispiel für Methodenaufruf:

lv_string = method1( ).

Beachten Sie, dass mit RETURNING deklarierte Parameter nur als Wert übergeben werden.

Vererbung - Definition

Information

Mit Vererbung können Sie eine neue Klasse von einer vorhandenen Klasse ableiten. Dazu verwenden Sie den Zusatz INHERITING FROM im

CLASS Unterklasse DEFINITION VON Super INHERITING.

Aussage. Die neue Klassenunterklasse erbt alle Komponenten der vorhandenen Klassensuperklasse. Die neue Klasse wird als Unterklasse der Klasse bezeichnet, von der sie abgeleitet ist. Die ursprüngliche Klasse wird als Oberklasse der neuen Klasse bezeichnet. Eine Klasse kann mehr als eine direkte Unterklasse haben, jedoch nur eine direkte Oberklasse.

Klassenimplementierung

CLASS lcl_vehicle DEFINITION.
ENDCLASS.

CLASS lcl_vehicle IMPLEMENTATION.
ENDCLASS.

CLASS lcl_car DEFINITION INHERITING FROM lcl_vehicle.
ENDCLASS.

CLASS lcl_car IMPLEMENTATION.
ENDCLASS.

Vererbung - abstrakte und endgültige Methoden und Klassen

Information

Mit den Ergänzungen ABSTRACT und FINAL zu den Anweisungen METHODS und CLASS können Sie abstrakte und letzte Methoden oder Klassen definieren.

Eine abstrakte Methode ist in einer abstrakten Klasse definiert und kann nicht in dieser Klasse implementiert werden. Stattdessen wird es in einer Unterklasse der Klasse implementiert. Abstrakte Klassen können nicht instanziiert werden.

Eine letzte Methode kann in einer Unterklasse nicht neu definiert werden. Abschlussklassen können keine Unterklassen haben. Sie schließen einen Vererbungsbaum ab.


Klassenimplementierung:

CLASS lcl_abstract DEFINITION ABSTRACT.
    PUBLIC SECTION.
        METHODS: abstract_method ABSTRACT,
                 final_method FINAL
                 normal_method.
                
ENDCLASS.

CLASS lcl_abstract IMPLEMENTATION.
    METHOD final_method.
        "This method can't be redefined in child class!
    ENDMETHOD.

    METHOD normal_method.
        "Some logic
    ENDMETHOD.

        "We can't implement abstract_method here!

ENDCLASS.

CLASS lcl_abap_class DEFINITION INHERITING FROM lcl_abstract.
    PUBLIC SECTION.
        METHODS: abstract_method REDEFINITION,
                 abap_class_method.
ENDCLASS.

CLASS lcl_abap_class IMPLEMENTATION.
    METHOD abstract_method.
        "Abstract method implementation
    ENDMETHOD.

    METHOD abap_class_method.
        "Logic
    ENDMETHOD.
ENDCLASS.

Beispiel für Methodenaufruf:

DATA lo_class TYPE REF TO lcl_abap_class.
CREATE OBJECT lo_class.

lo_class->abstract_method( ).
lo_class->normal_method( ).
lo_class->abap_class_method( ).
lo_class->final_method( ).


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow