为什么Java里的静态方法没办法调用动态方法?
是不是因为静态方法和动态方法在内存中的位置不一样,静态方法的地址空间在加载类的时候就确定,而动态方法的地址空间在生成类实例的时候确定?如果真是这样的话,在定义方法是静态还是动态的时候该如何做抉择,两者的优缺点是什么?

解决方案 »

  1.   

    同意楼上,静态方法实际上就是全局函数拉,他没有instance跟他关联的,那么他怎么去调用某个对象的动态方法呢,他们的区别主要就在于全局和局部函数的概念拉。
      

  2.   

    如果你想实现通用的功能性的方法,考虑采用静态方法:如Math类里的方法。
    但如果你所有的类都是用静态方法,那你的程序就不会体现OO的思想了。
      

  3.   

    静态方法又叫类方法。
    但是不是kingofhawks说的:“区别主要就在于全局和局部函数的概念拉”
    全局与局部的问题是封装的问题,说穿了就是private public portect 的问题而静态、动态的问题是内存装载的问题,说穿了就是static的问题学过c吗?原理一样的。但是也不能说静态方法没办法调用动态方法,看下面的例子。public class A{
        /**这是一个非静态方法
        */
        public void method1(){    }    /**这是一个静态方法
        */
        public static void method2(){
            A myA = new A();
            myA.method1();//调用
        }
    }