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

2022-09-03 13:57:53

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

套餐 A.B

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

包装 A.B.C

  • 类(继承自超类)SubClass

我宁愿不让公众可见...它实际上只是这个特定项目(A.B)的实用程序类。SuperClass

在我看来,子类应该能够看到,因为包A.B.C是A.B的子包...但事实并非如此。SuperClass

解决此问题的最佳方法是什么?我不认为将A.B.C中的所有内容都移动到A.B或将A.B.移动到A.B.C.是没有意义的......主要是因为可能会有一个A.B.D,它也继承了A.B.中的东西......

我对Java有点陌生,所以:D(我是一个C++和.NET的人)


答案 1

包是唯一标识符。您不能使它们遵循继承规则。包和子包不类似于超级类和子类。

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


答案 2

最好的办法是将 的(默认)构造函数声明为 。这样,只有同一包和子类中的类(无论包是什么)才能实例化它并从中扩展。SuperClassprotected


推荐