private은 객체 내부 구현을 닫는다
필드를 private으로 두면 외부는 공개 메서드를 통해서만 상태를 바꿉니다.
캡슐화는 필드를 무조건 숨기는 규칙이 아니라 객체의 변경 경로를 제한해 유효한 상태를 지키는 설계입니다.
필드를 private으로 두면 외부는 공개 메서드를 통해서만 상태를 바꿉니다.
접근 지정자를 생략한 package-private은 같은 패키지에서만 보입니다.
같은 패키지와 하위 클래스에 보이므로 단순히 public보다 조금 좁은 접근으로 생각하면 안 됩니다.
핵심 경계 필드를 private으로 두면 외부는 공개 메서드를 통해서만 상태를 바꿉니다.