Обычно доступ к приватным и защищенным атрибутам объекта запрещен из-за пределов класса. Но порой необходимо нарушить эту концепцию по тем или иным причинам. Для этого в ABAP существует "дружба".
Класс может предоставить дружбу другим классам и интерфейсам. Этим друзьям предоставляется доступ ко всем компонентам класса, предлагающего дружбу, независимо от их раздела видимости или добавления READ-ONLY.
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
CLASS lcl_friend DEFINITION. PUBLIC SECTION. METHODS access. ENDCLASS. CLASS lcl_class_one DEFINITION FRIENDS lcl_friend. PRIVATE SECTION. DATA mv_variable TYPE string VALUE 'Private Attribute'. ENDCLASS. CLASS lcl_friend IMPLEMENTATION. METHOD access. DATA(lo_obj) = NEW lcl_class_one( ). cl_demo_output=>display( lo_obj->mv_variable ). ENDMETHOD. ENDCLASS. START-OF-SELECTION. DATA(lo_object) = NEW lcl_friend( ). lo_object->access( ). |
Читать далее «Дружба ABAP Objects. Получить доступ к приватному атрибуту»