본문 바로가기

ABAP 프로그래밍 개념/Object-Oriented ABAP

ABAP OOP : ENCAPSULATION(캡슐화) PART2 : Friends

클래스는 다른 클래스를 그 자신의 Friends로 선언을 하면서, Private와 Protected Component를 포함한자신의 모든 구성요소에 접근을 허락을 합니다. Friend Class는 클래스 정의에서 Friend로 명시적으로 정의된 클래스입니다. Friendship relation은 상호적인 것은 아닙니다.

예를 들어, 클래스 c1에서 클래스 c2를 friend로 선언한다면, 클래스 c2의 Methods(메소드)는 클래스 c1의 Private Component에 접근할 수 있습니다. 그러나 클래스 c1의 Methods들은 c2의 Private Component에 접근할 수는 없습니다.
이것은 클래스 그 자신을 다른 클래스로 선언하여 다른 클래스의 Private와 Procted Components에 접근하는 것을 예방해줍니다.

CLASS c1 DEFINITION FRIENDS c2 c3.

ENDCLASS.

위는 다른 클래스를 Friends로 정의하는 예시입니다. 예를 보면, CLASS c1의 friends class로 c2와 c3를 선언하였고, c2와 c3가 c1의 Procted & Private Components로 허락해줍니다.

 아래를 보면 SE24에서 Friends Tab을 통해서 friends class를 Global Class로 관리할 수 있음을 보여줍니다.

SE24 Source-Code Base
SE24 Form-Base

 

이처럼 Friends Class는 자신과 생김새와 똑같은 클래스를 만드는 것이고 해당 클래스들에서 자신의 구성요소에 접근 할 수 있도록 하는 것을 의미합니다. 아래는 실제 CL_GUI_ALV_GRID에서 실제 선언되어 있는 Friends Class입니다.

반응형