为什么包可见性优先于子类可见性?

mor*_*der 14 java visibility

这个答案显示了Java的可见性修饰符及其含义:

Modifier    | Class | Package | Subclass | World
————————————+———————+—————————+——————————+———————
public      |  y    |    y    |    y     |   y
————————————+———————+—————————+——————————+———————
protected   |  y    |    y    |    y     |   n
————————————+———————+—————————+——————————+———————
no modifier |  y    |    y    |    n     |   n
————————————+———————+—————————+——————————+———————
private     |  y    |    n    |    n     |   n
Run Code Online (Sandbox Code Playgroud)

我的问题是,为什么允许所有子类的可见性意味着您必须提供包中所有其他类的可见性?换句话说,为什么Java创建者会这样做,而不是:

Modifier    | Class | Subclass | Package | World
————————————+———————+—————————-+——————————+———————
public      |  y    |    y    |    y     |   y
————————————+———————+—————————+——————————+———————
no modifier |  y    |    y    |    y     |   n
————————————+———————+—————————+——————————+———————
protected   |  y    |    y    |    n     |   n
————————————+———————+—————————+——————————+———————
private     |  y    |    n    |    n     |   n
Run Code Online (Sandbox Code Playgroud)

Zho*_*gYu 11

据说一个包由同一个团队编写和维护; 假设程序员对所有代码都有深入的了解,那么在程序包中使用更宽松的访问控制是可以的.

子类通常由其他人编写; 对API的更严格限制更好.