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