为什么子包不能看到包私有类?

Pol*_*878 10 java inheritance packages organization

好的,我有这个项目结构:

包AB

  • class SuperClass(此类标记为包私有)

包ABC

  • class SubClass(继承自超类)

我宁愿不SuperClass公开显示......它实际上只是这个特定项目(AB)的实用工具类.

在我看来SubClass应该能够看到SuperClass,因为包ABC是AB的子包..但事实并非如此.

解决此问题的最佳方法是什么?我不认为将ABC中的所有内容移至AB或将AB移至ABC是不合理的...主要是因为可能会有一个ABD继承AB中的内容...

我对Java有点新意,所以要好看:D(我是C++和.NET人)

bra*_*boy 9

包是唯一标识符.你不能让他们遵循继承规则.Package和SubPackage与Super和Sub类不相似.

我没有看到任何使你想在子包中使用的类对外界可见的缺陷.我很想知道如何在C++/.net中处理这个标准(因为我是一个java人:)

  • 我没有得到与继承相关的类比。包是名称空间。命名空间根据定义是分层的。Java的包私有类在子包中不可见是完全错误的。 (3认同)
  • 在.NET中,我只是将类放在文件夹中,并将它们标记为内部:) (2认同)

Bal*_*usC 6

最好的办法是声明SuperClassas 的(默认)构造函数protected.这样,只有相同的包和子类中的类,无论包是什么,都可以实例化它并从中扩展.