You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

包所拥有的类能否拥有package visibility?

包中类的package visibility合法性疑问

此前我认为包中的类可以拥有package visibility,这一认知来自Booch、Rumbaugh和Jacobson所著《The UML User's Guide, 2nd ed.》中的引用:

package visibility表示类对同一包中声明的其他类可见,但对其他包中声明的类不可见。

该特性在许多编程语言中都存在。我原本的理解对应如下包图:
包含两个嵌套包(含public、private和package visibility顶级类)与独立包的包图

UML 2.5.1规范对package visibility的定义更为精确,但最后一句话似乎禁止直接由包拥有的打包元素使用该可见性:

7.8.24.3:拥有package visibility的NamedElement对最近的封闭包内的所有元素可见(前提是其他拥有元素具备适当可见性)。在最近的封闭包外,标记为package visibility的NamedElement不可见。仅非包所拥有的NamedElement可标记为package visibility。

我从这句话理解到,包中的类无法标记为package visibility(因为类由包拥有),而类的属性和操作则可以(因为它们由类而非包拥有)。

这一点似乎在12.2.4节中得到了确认:

12.2.4:packagedElement的可见性可通过在名称前添加可见性符号表示(‘+’代表public,‘-’代表private)。包不可拥有protected或package visibility。

但我仍有疑问:

  • 这一限制十分出乎意料;
  • 上述语句仅说明包本身禁止使用package visibility,对其他元素的规定存在歧义(既未明确允许,也未明确禁止)。

因此,我的问题是:包所拥有的类能否拥有package visibility?若被禁止,是否存在合理的理由支撑这一限制?


内容的提问来源于stack exchange,提问作者Christophe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 13:13:13