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( ).