一尘不染

构造函数是否必须总是公开的?

java

我的第一个问题是-

   class Explain() {
        public Explain() {
      }
   }

构造函数应始终声明为公共吗?

如果我创建一个private构造函数该怎么办。

我总是看到构造函数是隐式的public。那么为什么private构造函数有用呢?还是根本没有用。因为没有人可以调用它,或者永远也不能创建对象(由于private构造函数)!这是我的第二个问题。


阅读 299

收藏
2020-12-03

共1个答案

一尘不染

不, 构造函数 可以是publicprivateprotecteddefault(根本没有访问修饰符)。

做某事private 并不意味着没有人可以访问它。这只是意味着该类之外的任何人都不能访问它。因此private构造函数也很有用。

private构造函数的用途之一是为单例类提供服务。单例类是将对象创建的数量限制为一个的类。使用private构造函数,我们可以确保一次最多只能创建一个对象。

范例-

public class Database {

    private static Database singleObject;
    private int record;
    private String name;

    private Database(String n) {
        name = n;
        record = 0;
    }

    public static synchronized Database getInstance(String n) {
        if (singleObject == null) {
            singleObject = new Database(n);
        }

        return singleObject;
    }

    public void doSomething() {
        System.out.println("Hello StackOverflow.");
    }

    public String getName() {
        return name;
    }
}
2020-12-03