access boundary

접근 지정자는 클래스의 공개 표면과 내부 상태를 나누는 경계다

public, private, protected는 단순 암기 항목이 아니라 외부 호출, 클래스 내부, 파생 클래스가 어디까지 볼 수 있는지 정하는 설계 장치다.

접근 지정자별 허용 범위
지정자 외부 객체 클래스 내부 파생 클래스 설계 의도
public 직접 호출 가능 접근 가능 접근 가능 사용자가 의존해도 되는 공식 API
private 직접 접근 불가 접근 가능 직접 접근 불가 상태 보호와 불변식 유지
protected 직접 접근 불가 접근 가능 접근 가능 상속 확장점, 외부 API는 아님
class 기본값 private로 닫힘 접근 가능 private 기준 struct와 기본 공개 범위가 다름
API

외부가 호출해야 하는 행동만 public에 둔다.

상태

검증 없이 바뀌면 안 되는 값은 private로 숨긴다.

상속

파생 클래스 협력 지점만 protected로 제한한다.