为什么java不允许访问父包中的包受限类型?
有类似的东西:
Package a
|--Class A
|--Package b
|--Class B
如果类A
具有包可见性,则无法从类B
访问类A
。我认为这很有道理,但显然不是。
这是什么原因?
答案 0 :(得分:6)
没有父包或子包这样的东西。软件包不是一个层次结构的东西。每个包都是独立的。遵循分层命名模式的程序包也按层次存储在分层文件系统中,这只是惯例。
来自JLS Sec 7.1:
包的分层命名结构旨在方便以常规方式组织相关包,但除了禁止包含具有与顶级类型相同的简单名称的子包之外,它本身没有意义( §7.6)在该包中声明。
例如,名为
oliver
的包与另一个名为oliver.twist
的包之间或名为evelyn.wood
和evelyn.waugh
的包之间没有特殊的访问关系。也就是说,名为oliver.twist
的包中的代码无法比在任何其他包中的代码更好地访问包oliver
中声明的类型。