Recherche…


Déclaration de classe

Les classes ABAP peuvent être déclarées globalement ou localement . Une classe globale peut être utilisée par n'importe quel objet du référentiel ABAP. En revanche, une classe locale ne peut être utilisée que dans la portée déclarée.

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

CLASS lcl_abap_class IMPLEMENTATION.
ENDCLASS.

Constructeur, méthodes

Implémentation de 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.

Exemple d'appel de méthode:

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

Méthode avec paramètres (importation, modification, exportation)

Implémentation de 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.

Exemple d'appel de méthode:

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

Méthode avec retour du paramètre

Implémentation de 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.

Exemple d'appel de méthode:

lv_string = method1( ).

Notez que les paramètres déclarés avec RETURNING sont transmis par valeur uniquement.

Héritage - définition

Information

L'héritage vous permet de dériver une nouvelle classe d'une classe existante. Vous faites cela en utilisant l’ ajout INHERITING FROM dans le

Sous- classe CLASS DEFINITION INHERITING FROM superclass.

déclaration. La nouvelle sous-classe de classe hérite de tous les composants de la superclasse de classe existante. La nouvelle classe est appelée la sous-classe de la classe dont elle est dérivée. La classe d'origine est appelée la superclasse de la nouvelle classe. Une classe peut avoir plus d'une sous-classe directe, mais elle ne peut avoir qu'une seule superclasse directe.

Implémentation de 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.

Héritage - Méthodes et classes abstraites et finales

Information

Les ajouts ABSTRACT et FINAL aux méthodes et aux déclarations de classe que vous permettent de définir des méthodes abstraites et finales ou des classes.

Une méthode abstraite est définie dans une classe abstraite et ne peut pas être implémentée dans cette classe. À la place, il est implémenté dans une sous-classe de la classe. Les classes abstraites ne peuvent pas être instanciées.

Une méthode finale ne peut pas être redéfinie dans une sous-classe. Les classes finales ne peuvent pas avoir de sous-classes. Ils concluent un arbre d'héritage.


Implémentation de 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.

Exemple d'appel de méthode:

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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow