계약 선별
외부 사용자가 호출해야 하는 최소 기능만 public으로 노출한다.
표면적 축소접근 지정자는 문법 장식이 아니라 객체가 스스로 지켜야 할 상태 조건의 경계다. 호출자가 알아야 하는 명령만 public에 두고, 상속 확장 지점과 내부 구현을 분리한다.
외부 사용자가 호출해야 하는 최소 기능만 public으로 노출한다.
표면적 축소멤버 변수는 직접 노출하지 않고 검증된 메서드로만 변경한다.
불변식 유지파생 클래스가 재정의하거나 보조해야 하는 부분만 protected로 둔다.
과도한 protected 경계연산자나 직렬화처럼 밀접한 함수만 friend로 지정한다.
권한은 좁게