Java私有构造方法作用

时间:2022-01-05 11:51:16

通常我们看到的构造方法如下

public class Test {
    Test() {
        }
    }
}

这个方法可以new Test();
构造函数默无返回值,今天看到项目中有一个private的构造方法。???
private修饰的构造方法无法在其他类中调用,也就是无法在外部实例化,有什么作用呢:

单例模式

单例的一种写法如下:

public class Singleton {

    private static Singleton instance;

    private Singleton() {
        // .......//
    }

    public Singleton getInstance() {

        if (instance == null)
            instance = new Singleton();
        return instance;
    }

}

这个例子特点有:

  1. 类的内部包括一个类的实力,并且为static类型
  2. 构造函数为私有
  3. 通过提供一个获取实例的方法,比如getInstance,该方法也为static类型。
    调用的时候,我们可以通过

Singleton instance = Singleton.getInstance();
有些时候我们只需要类只有一个实例,比如线程池,驱动

防止实例化

私有构造函数的另外一个用途,禁止实例化,不实例化的用处 使用static关键字,如果一个变量或者方法设置为static,那么它就不依赖所属的对象。

public class StaticTest {
    public static int a;
    public int b;

    public static void menthoA() {
        // ...//
    }

    public static void main(String[] args) {
        int c = StaticTest.a;
        StaticTest.menthoA();

        StaticTest instance = new StaticTest();
        int d = instance.b;
    }
}

如下情形,我们有一个工具类Utils,里面含有很多静态函数或者静态变量,由于静态的原因,我们完全可以通过类名来访问,这样,我们就没有必要实例化它们,所以我们可以将其构造函数设置为私有,这样就防止用户滥用。