请问普通类静态引用与直接使用静态类有什么区别? public class a1
 {
    public void a01 (){...}
    public static void a02 (){...}
 }
 public static class a2
 {
    public static void b01 (){...}
    public static void b02 (){...}
 }   private static a1=new a1();
  
  private static a2;    普通类静态引用有什么好处?这是指把实力化的类(a1)看成静态?

解决方案 »

  1.   

    静态的概念是内存只有一份拷贝,你上的a1定义n个对象,所有的对象都共享一个a02方法。对a02方法的调用都指向一个地址。。静态类的话,你整个类都只有一份拷贝了。
      

  2.   

    @lz:
    您可以将静态方法看做工具方法或实例的公共方法,但是可以为该类型创建实例。
    而静态类则不然,其内部只能包含静态成员,并且不能被实例化和派生。
    Math类型则是一个很好的例子.
      

  3.   

     public class a1
     {
      public void a01 (){...}
      public static void a02 (){...}
     }
     public static class b2
     {
      public static void b01 (){...}
      public static void b02 (){...}
     }   private static a1=new a1();
      
      private static b2;    普通类静态引用有什么好处?
      

  4.   

    如果楼主贴出的代码是C#的话,那么倒第三行"private static a1=new a1();"语法不对,应该是"private static A1 a1=new A1();",同时改改上面两个类的类名和方法名,把首字母改为大写。倒第二行"private static a2;"也有错误,static的类是不允许实体化的。区别主要在于:类1静态引用类2的实例后,类2的实例就成了类1的一个成员,类1的所有实例共享这个成员。而直接静态类的的访问范围由类的可访问修饰符确定,静态类没有实例,里面的方法被可访问它的类共享。“普通类静态引用”静态化的是“实例”,而“静态类”静态化的是“类”(有点拗,但愿你别看晕)。普通类静态引用有什么好处在于:可以使用带参数的构造方法实体化被引用的类,static类的构造方法帽不允许带参数。例如:        public class A1
            {
                public A1(int arg1)
                { ... }            public A1(int arg1, int arg2)
                { ... }
            }
            public static class A2
            {
                static A2() //静态类一般不写初始化方法,就算写初始化方法,也不能带参数。
                  { ... }            public static void B01()
                { ... }
            }         //使用带一个参数的构造方法实体化A1,做为当前类的静态成员a11
             private static A1 a11 = new A1(1);        //使用带两个参数的构造方法实体化A1,做为当前类的静态成员a12
            private static A1 a12 = new A1(1, 2);    
            
            //只要能访问静态类A2,就可以直接调用它的方法,不需要实例化A2
            A2.B01();        //试图能实例化静态类,会引用编译错误
            private static A2 a2   /*出错*/