各位论坛上面的朋友:下面的静态方法和实例方法是自己GOOGLE得来的,希望有朋友可以耐心地帮忙解答自己提出来的三个问题,并且用例子来说明问题,万分感激!静态方法:
静态方法是不属于特定对象的方法,静态方法可以访问静态成员变量,静态方法不可以直接访问实例变量,可以在实例函数调用的情况下,实例变量做为参数传给静态方法。静态方法也不能直接调用实例方法,可以间接调用,首先要创建一个类的实例,然后通过这一特定对象来调用静态方法。
实例方法:
一个实例方法的执行与特定对象关联,他的执行需要一个对象存在。实例方法可以直接访问静态变量和实例变量,实例方法可以直接访问实例方法、和静态方法,静态方法的访问方式为类名加点操作符加变量名。当多个实例对象存在时,内存中并不是存在某个特定的实例方法的拷贝,而是,相同类的所有对象都共享每个实例方法的一个拷贝(实例方法只占用“一套”空间)。问题:问题1:能不能用一个例子来说明,静态方法如何不可以直接访问实例变量,但可以在实例函数调用的情况下,实例变量做为参数传给静态方法?问题2:静态方法如何不能直接调用实例方法,但可以间接调用,另外,如何创建一个类的实例,然后通过这一特定对象来调用静态方法。请帮忙举一个例子来说明?
问题3:能不能也用一个简单的例子来说明以上的“实例方法呢?”

解决方案 »

  1.   

    问题1:
    class A{
     private int var1; ->这是实例变量,有实例的时候才有她 public static GetRes(){
         return var1;  ->调用静态方法的时候不需要类型实例,没有实例就没有var1,那么这里就不能访问实例变量var1
     }
    }
      

  2.   

    //问题1
    namespace cppShooter
    {
        public class A
        {
            public int x;
            public int y;
            public A() { }
            public static int ADD(int a, int b)
            {
                // 不可以直接访问实例变量
                // a = x;   
                return a + b;
            }
        }
        public class B
        {
            public B()
            {
                A aClass = new A();
                aClass.x = 10;
                aClass.y = 5;            // 参数引用
                Console.WriteLine(A.ADD(aClass.x, aClass.y));
            }
        }
    }
      

  3.   

    问题2:原理跟问题1是一样地!!实例方法可以直接访问静态变量和实例变量
    ===================================================
       public class A
        {
            public int x;
            public int y;
            public A() { }
            public void PopAdd()
            {
                // 直接引用静太方法
                Console.WriteLine(ADD(x, y));
            }
            public static int ADD(int a, int b)
            {
                // 不可以直接访问实例变量
                // a = x;   
                return a + b;
            }
        }
      

  4.   

    问题2:原理跟问题1是一样地!!实例方法可以直接访问静态变量和实例变量
    ===================================================
       public class A
        {
            public int x;
            public int y;
            public A() { }
            public void PopAdd()
            {
                // 直接引用静太方法
                Console.WriteLine(ADD(x, y));
            }
            public static int ADD(int a, int b)
            {
                // 不可以直接访问实例变量
                // a = x;   
                return a + b;
            }
        }回答的非常好,条理清楚,学习了。顺便帮忙顶下。