접근 제한자는 누가 변경 책임을 가져야 하는지로 정한다
필드를 감추는 목적은 비밀이 아니라 잘못된 상태 전이를 한 경계에서 통제하는 것이다.
public
호출자가 사용해야 하는 안정된 기능만 노출
protected
자식 구현이 재정의하거나 조립할 지점
private
클래스 불변식을 지키는 구현 세부
#private
런타임 리플렉션까지 막아야 하는 저장소
핵심필드 공개보다 의미 있는 메서드를 공개하면 유효성 검사와 상태 변경 규칙이 한곳에 남는다.