class Chinese
{
   static Chinese obj = new Chinese();
   private Chinese()
   {
System.out.println("dsfds");
   }
   public static Chinese getInstance()
   {
return obj;
   }   
}然后在main里调用Chinese obj1 = Chinese.getInstance();
来创建一个对象.可以防止别人new一个对象.我不明白的是:
static Chinese obj = new Chinese();这句不是也有new吗?
new的时候不是也要访问private Chinese()构造器吗?不是也不能访问吗?他怎么能产生一个对象的?
有点疑惑,大家帮忙解决?

解决方案 »

  1.   

    你这是访问权限控制的问题,在java中存在以下的访问权限控制:default 包中的其他类访问。不包括子类,不包括其他包 例如:int size; public 所有类,包括其他包的。 例如:public int size; protected 所有子类,不包括其他包 例如:protected int size; private 当前类,不包括其他类 例如:private int size;构造函数前没有public表示其是默认形式,也就是default的情况。
      

  2.   

    设计模式的书里讲这些比较清楚,Singleton也不只有着一种方式
      

  3.   

    我学得不只是权限控制,这么做好象目的是只产生一个对象.
    还有private static Chinese obj = new Chinese();这样写就更好了.
      

  4.   

    你这是访问权限控制的问题,在java中存在以下的访问权限控制:default 包中的其他类访问。不包括子类,不包括其他包 例如:int size; public 所有类,包括其他包的。 例如:public int size; protected 所有子类,不包括其他包 例如:protected int size; private 当前类,不包括其他类 例如:private int size;构造函数前没有public表示其是默认形式,也就是default的情况。
    -------------------------
    不知道在说什么,随便粘贴太不负责任了
      

  5.   

    然后在main里调用Chinese obj1 = Chinese.getInstance();
    来创建一个对象.可以防止别人new一个对象.
    ---------------------------------------------------------
    Chinese obj1 = Chinese.getInstance(); 这种方法叫做工厂方法,它的目的是为了产生同一类的对象,之所以不使用构造器不是因为防止别人new一个对象.回去好好看看书吧
      

  6.   

    然后在main里调用Chinese obj1 = Chinese.getInstance();
    来创建一个对象.可以防止别人new一个对象.
    ---------------------------------------------------------
    Chinese obj1 = Chinese.getInstance(); 这种方法叫做工厂方法,它的目的是为了产生同一类的对象,之所以不使用构造器不是像你说的那样为了防止别人new一个对象.回去好好看看书吧