access boundary
접근 지정자는 클래스의 공개 표면과 내부 상태를 나누는 경계다
public, private, protected는 단순 암기 항목이 아니라 외부 호출, 클래스 내부, 파생 클래스가 어디까지 볼 수 있는지 정하는 설계 장치다.
| 지정자 | 외부 객체 | 클래스 내부 | 파생 클래스 | 설계 의도 |
|---|---|---|---|---|
public |
직접 호출 가능 | 접근 가능 | 접근 가능 | 사용자가 의존해도 되는 공식 API |
private |
직접 접근 불가 | 접근 가능 | 직접 접근 불가 | 상태 보호와 불변식 유지 |
protected |
직접 접근 불가 | 접근 가능 | 접근 가능 | 상속 확장점, 외부 API는 아님 |
| class 기본값 | private로 닫힘 | 접근 가능 | private 기준 |
struct와 기본 공개 범위가 다름
|
API
외부가 호출해야 하는 행동만 public에 둔다.
상태
검증 없이 바뀌면 안 되는 값은 private로 숨긴다.
상속
파생 클래스 협력 지점만 protected로 제한한다.