잘 설계된 컴포넌트는 오직 API를 통해서만 다른 컴포넌트와 소통하며 서로의 내부 동작 방식은 신경쓰지 않음 ⇒ 정보 은닉/캡슐화

정보 은닉의 장점

자바에서의 정보 은닉

→ 요소가 선언된 위치접근 제한자를 사용해 요소의 접근성을 정할 수 있음

기본원칙 : 모든 클래스와 멤버의 접근성을 가능한 한 좁혀야 한다.

접근 범위

  1. private : 멤버를 선언한 톱레벨 클래스에서만 접근 가능
  2. package-private : 멤버가 소속된 패키지 안의 모든 클래스에서 접근 가능. 접근 제한자를 명시하지 않았을 때의 패키지 접근 수준 (but, 인터페이스 멤버는 기본적으로 public)
  3. protected : package-private의 접근 범위 포함, 이 멤버를 선언한 클래스의 하위 클래스에서도 접근 가능
  4. public : 모든 곳에서 접근 가능