Sök…
Klassdeklaration
ABAP-klasser kan förklaras globalt eller lokalt . En global klass kan användas av alla objekt i ABAP-förvaret. Däremot kan en lokal klass endast användas inom det räckvidd som deklareras.
CLASS lcl_abap_class DEFINITION.
PUBLIC SECTION.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS lcl_abap_class IMPLEMENTATION.
ENDCLASS.
Konstruktör, metoder
Klassimplementering:
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.
Exempel på metodsamtal:
DATA lo_abap_class TYPE REF TO lcl_abap_class.
CREATE OBJECT lo_abap_class. "Constructor call
lo_abap_class->method1( ).
Metod med parametrar (Importera, Ändra, Exportera)
Klassimplementering:
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.
Exempel på metodsamtal:
method1 (
EXPORTING iv_string = lv_string
IMPORTING ev_string = lv_string2
CHANGING cv_string = lv_string3
).
Metod med returnerande parameter
Klassimplementering:
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.
Exempel på metodsamtal:
lv_string = method1( ).
Observera att parametrar som deklarerats med RETURNING passeras med värde.
Arv - definition
Information
Arv gör att du kan hämta en ny klass från en befintlig klass. Detta gör du genom att använda ärva från tillsats i
CLASS underklass DEFINITION ärva FRÅN super.
påstående. Den nya klassens underklass ärver alla komponenter i den befintliga klassens superklass. Den nya klassen kallas underklassen för den klass som den härrör från. Den ursprungliga klassen kallas superklass för den nya klassen. En klass kan ha mer än en direkt underklass, men den kan bara ha en direkt superklass.
Klassimplementering
CLASS lcl_vehicle DEFINITION.
ENDCLASS.
CLASS lcl_vehicle IMPLEMENTATION.
ENDCLASS.
CLASS lcl_car DEFINITION INHERITING FROM lcl_vehicle.
ENDCLASS.
CLASS lcl_car IMPLEMENTATION.
ENDCLASS.
Arv - abstrakta och slutliga metoder och klasser
Information
ABSTRAKT- och SLUT- tillägg till METODER och KLASS- uttalanden låter dig definiera abstrakta och slutliga metoder eller klasser.
En abstrakt metod definieras i en abstrakt klass och kan inte implementeras i den klassen. Istället implementeras det i en underklass av klassen. Abstrakta klasser kan inte instanseras.
En slutlig metod kan inte omdefinieras i en underklass. Slutklasser kan inte ha underklasser. De avslutar ett arvträd.
Klassimplementering:
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.
Exempel på metodsamtal:
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( ).