잘 설계된 컴포넌트는 오직 API를 통해서만 다른 컴포넌트와 소통하며 서로의 내부 동작 방식은 신경쓰지 않음 ⇒ 정보 은닉/캡슐화
정보 은닉의 장점
- 개발 속도 높임 - 여러 컴포넌트 병렬 개발 가능
- 시스템 관리 비용 절감 - 컴포넌트 파악 쉬움, 컴포넌트 교체 부담 적음
- 성능 최적화에 도움 - 다른 컴포넌트에 영향을 주지 않고 해당 컴포넌트만 최적화할 수 있음
- 소프트웨어 재사용성 높임
- 큰 시스템 제작 난이도를 낮춰줌
자바에서의 정보 은닉
→ 요소가 선언된 위치와 접근 제한자를 사용해 요소의 접근성을 정할 수 있음
기본원칙 : 모든 클래스와 멤버의 접근성을 가능한 한 좁혀야 한다.
접근 범위
- private : 멤버를 선언한 톱레벨 클래스에서만 접근 가능
- package-private : 멤버가 소속된 패키지 안의 모든 클래스에서 접근 가능. 접근 제한자를 명시하지 않았을 때의 패키지 접근 수준 (but, 인터페이스 멤버는 기본적으로 public)
- protected : package-private의 접근 범위 포함, 이 멤버를 선언한 클래스의 하위 클래스에서도 접근 가능
- public : 모든 곳에서 접근 가능