通常构造函数是public的, 今天无意间写了一个default的构造函数, 在另外一个包 里面使用的时候居然发现The constructor is not visible,于是有了兴趣, 试验发现private, protected都是not visible.回去翻书《Thinking in java》关于构造函数那一节也没有讲。
写了几个例子,发现构造函数也遵循普通函数的访问机制, 即:
public :所有的类都可以使用;
protected : 本包以及子类可以使用;
default :本包可以使用;
private :仅本类可以使用。
所以:
如果构造函数是private的,则不可被继承;也阻止了本类被继承(如果只有这一个构造函数的话).
private的函数叫做效用函数(utility function),它起到了一个中转的作用,专门为其他函数服务
一般只有单例模式才把他设成为private
确保外部不能实例化,这样才能保证他是一个实例
给你个例子
public class ClassicSingleton {
private static ClassicSingleton instance = null;
private ClassicSingleton() {
}
public static ClassicSingleton getInstance() {
if(instance == null) {
instance = new ClassicSingleton();
}
return instance;
}
}