접근 제한자는 누가 변경 책임을 가져야 하는지로 정한다

필드를 감추는 목적은 비밀이 아니라 잘못된 상태 전이를 한 경계에서 통제하는 것이다.

이 멤버를 누가 직접 다뤄야 하는가?외부 사용자 → 상속 구현 → 클래스 내부 순으로 경계를 좁힌다
외부 계약

public

호출자가 사용해야 하는 안정된 기능만 노출

상속 확장

protected

자식 구현이 재정의하거나 조립할 지점

내부 규칙

private

클래스 불변식을 지키는 구현 세부

완전 차단

#private

런타임 리플렉션까지 막아야 하는 저장소

핵심필드 공개보다 의미 있는 메서드를 공개하면 유효성 검사와 상태 변경 규칙이 한곳에 남는다.