Zoeken…


Klasse verklaring

ABAP-klassen kunnen wereldwijd of lokaal worden verklaard. Een globale klasse kan door elk object binnen de ABAP-repository worden gebruikt. Een lokale klasse kan daarentegen alleen worden gebruikt binnen de scope die wordt aangegeven.

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

CLASS lcl_abap_class IMPLEMENTATION.
ENDCLASS.

Constructor, methoden

Klasse implementatie:

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.

Voorbeeld van methodeaanroep:

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

Methode met parameters (importeren, wijzigen, exporteren)

Klasse implementatie:

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.

Voorbeeld van methodeaanroep:

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

Methode met terugkerende parameter

Klasse implementatie:

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.

Voorbeeld van methodeaanroep:

lv_string = method1( ).

Houd er rekening mee dat parameters die met RETURNING worden gedeclareerd, alleen door waarde worden doorgegeven.

Overerving - definitie

Informatie

Met Overerving kun je een nieuwe klasse afleiden uit een bestaande klasse. U doet dit met de toevoeging INHERITING FROM in de

KLASSE subklasse DEFINITIE DIE OVERKOMT UIT superklasse.

uitspraak. De nieuwe klasse subklasse neemt alle componenten van de bestaande klasse superklasse over. De nieuwe klasse wordt de subklasse genoemd van de klasse waaruit deze is afgeleid. De oorspronkelijke klasse wordt de superklasse van de nieuwe klasse genoemd. Een klasse kan meer dan één directe subklasse hebben, maar deze mag slechts één directe superklasse hebben.

Klasse implementatie

CLASS lcl_vehicle DEFINITION.
ENDCLASS.

CLASS lcl_vehicle IMPLEMENTATION.
ENDCLASS.

CLASS lcl_car DEFINITION INHERITING FROM lcl_vehicle.
ENDCLASS.

CLASS lcl_car IMPLEMENTATION.
ENDCLASS.

Overerving - Abstracte en definitieve methoden en klassen

Informatie

Met de ABSTRACTE en LAATSTE toevoegingen aan de METHODEN en KLASSE- instructies kunt u abstracte en definitieve methoden of klassen definiëren.

Een abstracte methode is gedefinieerd in een abstracte klasse en kan niet in die klasse worden geïmplementeerd. In plaats daarvan wordt het geïmplementeerd in een subklasse van de klasse. Abstracte klassen kunnen niet worden gestart.

Een definitieve methode kan niet opnieuw worden gedefinieerd in een subklasse. Laatste klassen kunnen geen subklassen hebben. Ze concluderen een erfenisboom.


Klasse implementatie:

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.

Voorbeeld van methodeaanroep:

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow