Java中包私有类的优缺点?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (14)

我最近在学Java,并且遇到了package-private类的概念,如果我们没有指定任何东西,这是默认的。但后来我意识到:

  1. 我很少看到使用包私人类。是否有这样的理由,例如,它有严重的缺点,是多余的,还是仅仅是我读得不够?是否有强烈的争论/反对它的用法?
  2. 如果它在大多数情况下确实没有用,为什么它会成为默认值?
  3. 我们应该在什么情况下在现实世界中使用包私有的?也就是说,它何时会成为不可替代的?

换句话说,默认的package-private修饰符的主要优点和缺点是什么?

提问于
用户回答回答于

简短的回答是 - 这是一种稍宽的私人形式。

我假设你熟悉区分public和之间的区别private,以及为什么在方法和变量private如果要单独用于有问题的课程时是很好的做法。

那么,作为一个扩展 - 如果你正在考虑以模块化方式创建你的软件,你可能会考虑为你的模块提供一个公共接口,它将在它们之间有多个类进行协作。在这种情况下,public如果方法被消费者打电话,那么它就非常有意义; private如果他们在班级内部; 而package private如果他们使用这个模块中的类之间的调用,也就是说,它是你的模块的实现细节(公共呼叫者可以看到),但跨越几类。

这在实践中很少使用,因为包装系统对于这类事情不是那么有用。你必须将给定模块的所有类转储到完全相同的包中,这对于任何不重要的东西都会变得笨重。所以这个想法很好 - 让一个方法可以访问少量的“附近”类,稍微宽一些private- 但是对于如何定义这些类的限制意味着它很少被使用/很有用。

用户回答回答于

package-private的一个好处是你可以使用它来访问你认为私有的单元测试类的方法。当然,其缺点是包中的其他类可以在它们不应该的时候调用它。

扫码关注云+社区