class Single {
private Single() {
};
static private Single s = new Single();
public static Single getInstance() {
return s;
}
}
class Test1 {
public static void main(String[] args) {
Single s1 = Single.getInstance();
}
}
首先,指出你的一个错误,构造函数被私有化之后,仍然可以用来构造实例对象,但是只能在本类中构造对象。如上面的单例模式的程序。
其次,你要明白权限修饰符的种类和作用。public,protect,default,private,其中public,default还可以修饰类。private修饰的方法,只能在该类中使用,这是java里的规定,非法使用编译器会检查语法并报错。
还有,用private私有化构造函数的目的。这样做往往是为了防止其他类调用该方法创建该类对象。尤其是在单例模式中,如上面例子程序,为了保证外界的多个程序访问的都是同一个对象,就要防止外部程序调用该类的构造方法创建出多个不同的对象,而在本类的内部可以调用该私有化的构造方法在该类内部创建一个对象,并提供一个供其他类访问的接口(如上面的getInstance()),就可以实现多个程序访问同一个对象的目的了。
最后,用private进行私有化来控制访问,更体现了java类的封装性,是一种安全机制。建议不要把重点放在对权限修饰符的理解上。加深下权限修饰符方面的知识。
|