用protected来修饰构造器,有什么用途?
是sun认证里的一道题目。
------解决方案--------------------保护该类不会被“外部”实例化。也就是说,这样的类的实例只能按照设计者预定的规则生成:比如单例控制,工厂化模式等。一个例子:
class Single{
protected static Single sInstance==null;
public static Single getInstance(){//the "outer " can only call this method to get a instance
if(sInstance==null) sInstance=new Single();
return sInstance;
}
protected Single(){}
}
------解决方案--------------------答案不完全对
protected 是一个可访问性标识,它修饰构造器则表示改类不能被包外的对象实例化
但包内的和继承的子类,以及当前类的静态方法可以对齐进行实例化。
private修饰构造器时则只能在类的静态方法内进行实例化,单例模式和工具类都是这么修饰构造器的。