为什么构造器私有之后不能创建对象了?

Posted 南风阿帅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么构造器私有之后不能创建对象了?相关的知识,希望对你有一定的参考价值。

在Java中,我们可以构造方法,而构造方法又分为有参和无参构造方法:

/*   无参数的构造方法,如果类中无构造方法,则默认就有一个无参的构造方法,如果类中有带参的构造方法,则默
 *    的构造方法就没有了
 */
    private student(){}

    student(){}

    public student(){}

//    带参数的构造方法
public student(String name,String cardID){
        this.name = name;
        this.cardID = cardID;
    }

而在类中还会默认有一个方法名称和类名称一样的一个无参构造方法,称作“构造器”,这个构造器的作用就是创建一个类的实例,并且初始化这个实例。

当然,如果我们手动的将这个构造器用“private”修饰,将之私有之后,便不能初始化实例了,这样,用户也就不能再自己新建一个对象了。

这个方法可以用于“单例设计模式”,即只能有一个对象。

//饿汉式
//不让用户去自主的创建实例对象,而是自己创建好实例对象,让用户通过设置好的方法去调用
class Singleton{
    private static Singleton s = new Singleton();
    private Singleton(){}//直接把构造器私有化
    public ststic Singleton getInstance(){
        return s;
}
}

//懒汉式
class Singleton{
    private static Singleton s;
    private Singleton(){}//构造器私有
    public ststic Singleton getInstance(){
        if(s == null){
            s = new Singleton();
        }
        return s;
    }
}

 

以上是关于为什么构造器私有之后不能创建对象了?的主要内容,如果未能解决你的问题,请参考以下文章

为什么提供私有的构造器能保证一个类只有一个实例(有待深入)

特殊作用的私有成员函数

单例设计模式

单例及构造函数私有化

Single设计模式

构造私有化和单例设计模式