Access Control

접근 지정자

public, private, protected는 단순 제한 문법이 아니라 객체가 외부에 무엇을 약속하고 무엇을 숨길지 정하는 장치다.

캡슐화 기준

클래스 경계

public

객체를 사용하는 코드가 호출해도 되는 안정적인 표면이다.

private

클래스 내부에서만 바꿔야 하는 상태와 보조 동작을 숨긴다.

protected

상속받은 클래스에는 열어두되 외부 사용자는 막는다.

불변식 보호

멤버 변수를 직접 열지 않고 메서드로 검증된 변경만 허용한다.

stateprivatemethodpublic
상태 경계

캡슐화는 숨기기 자체가 목표가 아니다. 객체가 항상 올바른 상태를 유지하도록 변경 통로를 통제하는 것이다.