通常我们看到的构造方法如下
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;
}
}
这个例子特点有:
- 类的内部包括一个类的实力,并且为static类型
- 构造函数为私有
- 通过提供一个获取实例的方法,比如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,里面含有很多静态函数或者静态变量,由于静态的原因,我们完全可以通过类名来访问,这样,我们就没有必要实例化它们,所以我们可以将其构造函数设置为私有,这样就防止用户滥用。