타입과 멤버의 공개 여부는 별도로 판단한다

public 클래스 안의 모든 멤버가 public일 필요는 없습니다.

대상권장 시작넓히는 조건
최상위 모델package-private외부 패키지 API
필드private직접 노출 거의 없음
생성자필요 범위외부 생성 허용
보조 메서드private패키지 협력 필요

핵심: 중첩 타입에는 네 수준을 모두 쓸 수 있지만 최상위 타입은 public 또는 package-private입니다.