为什么java包不能用作层次结构?

DBL*_*uis -5 java packages

为什么java不允许访问父包中的包限制类型?

有类似的东西:

Package a
|--Class A
|--Package b
   |--Class B
Run Code Online (Sandbox Code Playgroud)

如果类具有包可见性,则无法A从类访问类.我觉得这很有道理,但显然不是.BA

这是什么原因?

Vam*_*ire 6

没有父包或子包这样的东西.包不是一个层次结构的东西.每个包都是独立的.遵循分层命名模式的包也分层存储在分层文件系统中,这只是惯例.

来自JLS Sec 7.1:

包的分层命名结构旨在方便以传统方式组织相关包,但除了禁止包含具有与顶级类型相同的简单名称的子包之外,它本身没有意义(第7.6节)在该包中声明.

例如,在名为的包oliver和另一个名为的包oliver.twist之间,或者在名为evelyn.wood和的包之间没有特殊的访问关系evelyn.waugh.也就是说,命名包中的代码oliver.twist无法更好地访问包中声明的类型,而oliver不是任何其他包中的代码.