好的,我有这个项目结构:
包A.B
SuperClass
(此类标记为包私有)包A.B.C
SubClass
(继承自超类)我宁愿不让SuperClass
公开显示......它实际上只是这个特定项目的实用程序类(A.B)。
在我看来,SubClass应该能够看到SuperClass
,因为包A.B.C是A.B的子包......但事实并非如此。
解决此问题的最佳方法是什么?我认为将A.B.C中的所有内容移至A.B或将A.B移至A.B.C是不合理的...主要是因为可能会有A.B.D继承A.B.中的内容......
我对Java有点新,所以要好看:D(我是C ++和.NET人)
答案 0 :(得分:9)
包是唯一标识符。你不能让他们遵循继承规则。 Package和SubPackage与Super和Sub类不相似。
我没有看到使你想在子包中使用的类对外界可见的任何缺陷。我很想知道如何在C ++ / .net中处理这个标准(因为我是一个java人:))
答案 1 :(得分:6)
最好的办法是将SuperClass
的(默认)构造函数声明为protected
。这样,只有相同的包和子类中的类,无论包是什么,都可以实例化它并从中扩展。
答案 2 :(得分:-1)
为什么不将它们放在同一个包级别?
你能以某种方式使用构图而不是继承吗?在阅读Effective Java之后,我一直在努力做更多这方面的事情。不确定这是否可以满足您的需求,但可能值得考虑。
祝你好运。