Поиск…
Объявление класса
Классы ABAP могут быть объявлены глобально или локально . Глобальный класс может использоваться любым объектом в репозитории ABAP. Напротив, локальный класс может использоваться только в пределах области, которую он объявляет.
CLASS lcl_abap_class DEFINITION.
PUBLIC SECTION.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS lcl_abap_class IMPLEMENTATION.
ENDCLASS.
Конструктор, методы
Реализация класса:
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.
Пример вызова метода:
DATA lo_abap_class TYPE REF TO lcl_abap_class.
CREATE OBJECT lo_abap_class. "Constructor call
lo_abap_class->method1( ).
Метод с параметрами (импорт, изменение, экспорт)
Реализация класса:
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.
Пример вызова метода:
method1 (
EXPORTING iv_string = lv_string
IMPORTING ev_string = lv_string2
CHANGING cv_string = lv_string3
).
Метод с возвращаемым параметром
Реализация класса:
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.
Пример вызова метода:
lv_string = method1( ).
Обратите внимание, что параметры, объявленные с помощью RETURNING , передаются только по значению.
Наследование - определение
Информация
Наследование позволяет вывести новый класс из существующего класса. Вы делаете это, используя добавление INHERITING FROM в
Подкласс CLASS ОПРЕДЕЛЕНИЕ ВНУТРЕННИЙ ОТ суперкласса.
заявление. Подкласс нового класса наследует все компоненты существующего класса суперкласса. Новый класс называется подклассом класса, из которого он получен. Первоначальный класс называется суперклассом нового класса. Класс может иметь более одного прямого подкласса, но он может иметь только один прямой суперкласс.
Внедрение класса
CLASS lcl_vehicle DEFINITION.
ENDCLASS.
CLASS lcl_vehicle IMPLEMENTATION.
ENDCLASS.
CLASS lcl_car DEFINITION INHERITING FROM lcl_vehicle.
ENDCLASS.
CLASS lcl_car IMPLEMENTATION.
ENDCLASS.
Наследование - абстрактные и конечные методы и классы
Информация
АБСТРАКТНЫЕ и ЗАКЛЮЧИТЕЛЬНЫЕ дополнения к операторам METHODS и CLASS позволяют вам определять абстрактные и окончательные методы или классы.
Абстрактный метод определен в абстрактном классе и не может быть реализован в этом классе. Вместо этого он реализуется в подклассе класса. Абстрактные классы не могут быть созданы.
Окончательный метод не может быть переопределен в подклассе. Заключительные классы не могут иметь подклассы. Они заключают дерево наследования.
Реализация класса:
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.
Пример вызова метода:
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( ).