编程语言
首页 > 编程语言> > java-何时应将构造方法声明为public,何时应将其构造为包私有的?

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