在 Java 中,我有时会看到构造函数被声明为“public”,有时它没有访问修饰符,这意味着它是包私有(private)的。在什么情况下我必须重新使用一个,反之亦然?
最佳答案
问题包含答案。如果您允许包外的客户端代码实例化您的对象,请将构造函数公开。如果你不想那样(因为对象是包特定的或者对象本身不能直接实例化)使用 package-private。
例如,如果您有一个客户端代码应该使用 Car
(这是一个接口(interface))并且一些包 com.company.cars
包含类,它实现Car
接口(interface)(BMW、WV、Opel
)等等,那么您宁愿有一个工厂来实例化必要的 Car 实现。因此,只有工厂可以访问构造函数。
public CarFactory {
public Car getCar(CarType carType) {
Car result = null;
switch(carType) {
case BMW:
result = new BMW();
case Opel:
result = new Opel();
}
return result;
}
}
class BMW implements Car {
// package-private constructor
BMW();
}
关于java - 什么时候应该将构造函数声明为公共(public)的,什么时候应该是包私有(private)的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4562304/