NoTimeForDawdling

접근 제어자(Access Modifier) 본문

Java

접근 제어자(Access Modifier)

Room_Energy 2021. 2. 24. 19:36

자바에서 접근 제어자는 정보 은닉을 위해 필수적으로 알고 있어야 할 내용입니다. 그렇다면 접근 제어자가 뭘까요??

 

접근 제어자란?

접근 제어자는 변수, 메서드, 클래스 선언 시 사용되며 해당 변수, 메서드, 클래스의 접근 권한을 제어하는 역할을 합니다.

즉, 접근 제어자를 통해 해당 정보를 외부로부터 보호해주기 때문에, 정보 은닉을 구현할 수 있게 도와줍니다.

 

접근 제어자 종류

접근 제어자의 종류로는 4가지가 있습니다.

  • private: 멤버를 선언한 톱레벨 클래스(해당 클래스)에서만 접근 가능합니다.
  • package-private(default): 멤버가 소속된 패키지 안의 모든 클래스에서 접근할 수 있습니다.
  • protected: package-private의 접근 범위를 포함하며, 이 멤버를 선언한 클래스의 하위 클래스에서도 접근 가능합니다.
  • public: 모든 곳에서 접근 가능합니다. (공개 API)

접근 범위가 좁은 순서대로 알아보겠습니다.

 

1. private

  • private은 접근 범위가 가장 좁은 제한자입니다.
  • 자기 자신의 클래스 내에서만 접근이 가능합니다.
  • 즉, private가 붙은 변수, 메서드는 해당 클래스에서 접근이 가능합니다.

2. package-private(default)

  • package-private은 접근 제한자를 명시하지 않았을 경우를 의미합니다. 그래서 default 제한자라고 부릅니다.
  • 동일한 패키지에 있는 모든 클래스에서 접근이 가능합니다.

3. protected

  • 동일한 패키지 내의 클래스 또는 해당 클래스를 상속받은 외부 패키지의 클래스에서 접근이 가능합니다.

4. public

  • 접근에 제한이 없습니다.
  • 즉, public 접근 제어자로 되어있으면 어떤 클래스에서도 접근이 가능합니다.
  • public 접근 제어자가 많다면 그만큼 공개되는 정보들이 많기 때문에 최소화를 하는게 좋습니다.

 

정보 은닉의 기본 원칙으로 모든 클래스와 멤버의 접근성을 가능한 좁혀야 한다는 말이 있습니다.

접근성을 좁혀야 한다는 건 접근 제어자와 밀접한 관련이 있습니다. 외부에 노출할 필요가 없는 정보들은 최대한 은닉하기 위해 접근 권한을 최소화하도록 습관을 들여야겠습니다.

 

'Java' 카테고리의 다른 글

일급 컬렉션(First Class Collection)  (0) 2021.03.01
얕은 복사(Shallow Copy) vs 깊은 복사(Deep Copy)  (0) 2021.02.25
Enum 클래스 파헤치기  (0) 2021.02.23
[Java] 불변 리스트(Immutable ArrayList)  (0) 2021.02.15
Arrays.asList()  (0) 2021.02.15