java-何时应将构造方法声明为public,何时应将其构造为包私有的?
作者:互联网
在Java中,我有时看到构造函数声明为“ public”,有时却没有访问修饰符,这意味着它是程序包私有的.在什么情况下我必须使用“ over over”,反之亦然?
解决方法:
问题包含答案.如果允许包外部的客户端代码实例化对象,则使构造函数公开.如果您不希望这样做(因为对象是特定于包的,或者对象本身无法直接实例化),请使用package-private.
例如,如果您的客户端代码应使用Car(这是interface),并且某些包com.company.cars包含实现Car接口(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();
}
标签:access-modifiers,java 来源: https://codeday.me/bug/20191208/2094643.html