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

时间:2016-09-23 12:08:57

标签: java packages

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

有类似的东西:

Package a
|--Class A
|--Package b
   |--Class B

如果类A具有包可见性,则无法从类B访问类A。我认为这很有道理,但显然不是。

这是什么原因?

1 个答案:

答案 0 :(得分:6)

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

来自JLS Sec 7.1

  

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

     

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