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


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow