public
객체를 사용하는 코드가 호출해도 되는 안정적인 표면이다.
public, private, protected는 단순 제한 문법이 아니라 객체가 외부에 무엇을 약속하고 무엇을 숨길지 정하는 장치다.
객체를 사용하는 코드가 호출해도 되는 안정적인 표면이다.
클래스 내부에서만 바꿔야 하는 상태와 보조 동작을 숨긴다.
상속받은 클래스에는 열어두되 외부 사용자는 막는다.
멤버 변수를 직접 열지 않고 메서드로 검증된 변경만 허용한다.
캡슐화는 숨기기 자체가 목표가 아니다. 객체가 항상 올바른 상태를 유지하도록 변경 통로를 통제하는 것이다.