14

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

包 AB

  • SuperClass(这个类被标记为包私有)

包ABC

  • SubClass(继承自超类)

我宁愿不SuperClass公开...它实际上只是这个特定项目(AB)的实用程序类。

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

解决此问题的最佳方法是什么?我认为将 ABC 中的所有内容移至 AB 或将 AB 移至 ABC 是没有意义的。主要是因为可能会有一个 ABD 也继承自 AB 中的东西......

我对 Java 有点陌生,所以要友善:D(我是 C++ 和 .NET 人)

4

3 回答 3

12

包是唯一的标识符。你不能让它们遵循继承规则。Package 和 SubPackage 与 Super 和 Sub 类不同。

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

于 2010-03-21T22:58:38.570 回答
8

SuperClass您最好的选择是声明as的(默认)构造函数protected。这样,只有同一个包和子类中的类,无论包如何,都可以实例化它并从中扩展。

于 2010-03-21T22:59:39.463 回答
0

为什么不把它们放在同一个包级别?

你能以某种方式使用组合而不是继承吗?在阅读了 Effective Java 之后,我一直在尝试自己做更多的事情。鉴于您的需要,不确定这是否可行,但可能值得考虑。

祝你好运。

于 2010-03-21T23:04:39.640 回答