Ricerca…


Dichiarazione di classe

Le classi ABAP possono essere dichiarate globalmente o localmente . Una classe globale può essere utilizzata da qualsiasi oggetto all'interno del repository ABAP. Al contrario, una classe locale può essere utilizzata solo nell'ambito che è stato dichiarato.

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

CLASS lcl_abap_class IMPLEMENTATION.
ENDCLASS.

Costruttore, metodi

Implementazione della classe:

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.

Esempio di chiamata al metodo:

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

Metodo con parametri (importazione, modifica, esportazione)

Implementazione della classe:

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.

Esempio di chiamata al metodo:

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

Metodo con parametro di ritorno

Implementazione della classe:

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.

Esempio di chiamata al metodo:

lv_string = method1( ).

Si noti che i parametri dichiarati con RETURNING vengono passati solo per valore.

Ereditarietà - definizione

Informazione

L'ereditarietà consente di derivare una nuova classe da una classe esistente. Lo fai usando l'aggiunta di INHERITING FROM nel

Sottoclasse CLASS DEFINIZIONE EREDITANTE DA superclasse.

dichiarazione. La nuova sottoclasse di classe eredita tutti i componenti della superclasse di classe esistente. La nuova classe è chiamata la sottoclasse della classe da cui deriva. La classe originale è chiamata la superclasse della nuova classe. Una classe può avere più di una sottoclasse diretta, ma può avere solo una superclasse diretta.

Implementazione di classe

CLASS lcl_vehicle DEFINITION.
ENDCLASS.

CLASS lcl_vehicle IMPLEMENTATION.
ENDCLASS.

CLASS lcl_car DEFINITION INHERITING FROM lcl_vehicle.
ENDCLASS.

CLASS lcl_car IMPLEMENTATION.
ENDCLASS.

Ereditarietà - Metodi e classi astratti e finali

Informazione

Le aggiunte ABSTRACT e FINAL alle istruzioni METHODS e CLASS consentono di definire metodi o classi astratti e finali.

Un metodo astratto è definito in una classe astratta e non può essere implementato in quella classe. Invece, è implementato in una sottoclasse della classe. Le classi astratte non possono essere istanziate.

Un metodo finale non può essere ridefinito in una sottoclasse. Le classi finali non possono avere sottoclassi. Concludono un albero ereditario.


Implementazione della classe:

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.

Esempio di chiamata al metodo:

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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow