아이템 15. 클래스와 멤버의 접근 권한을 최소화하라 - KwangtaekJung/book-effective-java GitHub Wiki
정보 은닉 혹은 캡슐화
- 모든 내부 구현은 완벽히 숨기고 오직 API를 통해서만 다른 컴포넌트와 소통한다.
- 자바는 정보 은닉을 위한 다양한 장치를 제공한다.
접근 제어 메커니즘 (JLS, 6.6)
-
클래스, 인터페이스, 멈베의 접근성을 명시
-
각 요소의 접근성은 그 요소가 선언된 위치와 접근 제한자(private, protected, public)로 정해진다.
-
톨레벨 클래스와 인터페이스에 부여할 수 있는 접근 수준
- package-private
- public
-
멤버(필드, 메서드, 중첩 클래스, 중첩 인터페이스)
- private: 멤버를 선언한 톱레벨 클래스에서만 접근할 수 있다.
- package-private: 멤버가 소속된 패키지 안의 모든 클래스에서 접근할 수 있다. (접근 제한자를 명시하지 않았을 때 적용됨.)
- protected: package-private의 접근 범위를 포함하여, 이 멤버를 선언한 클래스의 하위 클래스에서 접근할 수 있다.
- public: 모든 곳에서 접근할 수 있다.