Дружба ABAP Objects. Получить доступ к приватному атрибуту

Обычно доступ к приватным и защищенным атрибутам объекта запрещен из-за пределов класса. Но порой необходимо нарушить эту концепцию по тем или иным причинам. Для этого в ABAP существует “дружба”.
Класс может предоставить дружбу другим классам и интерфейсам. Этим друзьям предоставляется доступ ко всем компонентам класса, предлагающего дружбу, независимо от их раздела видимости или добавления READ-ONLY.

Пример:

Также можно использовать интерфейс. Все классы реализованные от интерфеса будут получать достпук к приватным атрибутам дружественного класса.

Более практический пример. Для получения доступа к приватному атрибуту alv можем унаследоваться от одного из классов друзей и также получим доступ к приватному атрибуту.

Стоит быть аккуратным с подобными действиями, т.к. это нарушает принцип инкапсуляции. Инкапсуляция  — процесс разделения элементов абстракций, определяющих ее структуру (данные) и поведение (методы); инкапсуляция предназначена для изоляции контрактных обязательств абстракции (протокол/интерфейс) от их реализации.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *