是sun认证里的一道题目。

解决方案 »

  1.   

    保护该类不会被“外部”实例化。也就是说,这样的类的实例只能按照设计者预定的规则生成:比如单例控制,工厂化模式等。一个例子:
    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(){}
    }
      

  2.   

    答案不完全对
    protected 是一个可访问性标识,它修饰构造器则表示改类不能被包外的对象实例化
    但包内的和继承的子类,以及当前类的静态方法可以对齐进行实例化。
    private修饰构造器时则只能在类的静态方法内进行实例化,单例模式和工具类都是这么修饰构造器的。