Access control

접근 제어자는 외부 API와 내부 구현 경계를 나눈다

public, private, protected는 보안 장벽이라기보다 사용자가 의존해도 되는 표면을 줄이는 설계 도구다.

public
외부 접근 가능
사용자가 믿고 호출하는 API
private
클래스 내부만
구현 세부와 불변 조건 보호
protected
클래스 + 하위 클래스
상속 확장을 위한 내부 표면
API surface
공개 범위 최소화
변경 가능한 구현과 사용 계약 분리
상황판단
열어도 되는 것호출자가 의존해도 되는 안정 계약
숨겨야 하는 것검증 없이 바꾸면 깨지는 내부 상태
상속용 표면외부에는 숨기되 하위 클래스에는 허용

핵심 접근 범위를 줄일수록 나중에 내부 구현을 바꾸기 쉬워진다.