大家都知道静态方法不能调用非静态方法, 如下面的代码:由于main方法有static关键字 所以它是静态方法 当他调用了非静态的cc()方法以后 在编译的时候肯定会出错 我想问一下为什么静态方法调用非静态方法会出错?
class a{
     pubic static void main(String[] args){          cc();
     }     void cc(){
          System.out.println("cc");
     }}

解决方案 »

  1.   

    非静态方法必须要有对象 静态方法不一样非要有对象 
    所以静态方法不能调用非静态方法 非静态方法可以调用静态方法
      

  2.   

    静态方法是类共有的, 非静态的每个类都有
    静态方法访问类名.方法名, 非静态的, 实体对象.方法名
      

  3.   

    这个不是实质性的答案哦 …… ^^!
      

  4.   

    这些我都知道  我想要知道的是为什么静态方法调用非静态方法会出错!!!!
      

  5.   

    静态方法编译期完成, 
    你可以想象下在实体还没生成的情况下如何调用?
      

  6.   

    这位朋友能不能具体点说明一下 在程序编译期 静态方法的状况
      

  7.   

    译时确定与运行时确定,就好比,静态内存与动态内存的关系,是相对的,视上下文环境而定。
     例如:在用户程序中,堆空间分配动态内存,栈空间分配的相对来说是静态内存;数据段和代码段属于静态内存,堆和栈相对来说都是动态内存;内核中的静态变量和代码属于静态内存,整个用户程序相对来说都是动态内存。
     同理:常数值在编译时就确定,变量值要到运行时才确定;局部变量相对于栈基址的偏移,编译时就确定,堆空间变量的相对位置也要运行时才确定;静态变量在用户空间的地址【虚拟地址】编译时就确定,而非静态变量运行时才确定; 
      

  8.   

    非静态方法必须要有对象     静态方法是公用的,不一样非要有对象 
    所以静态方法不能调用非静态方法,但是非静态方法可以调用静态方法
      

  9.   

      首先非静态方法的调用是必须通过  对象.非静态方法.   而静态方法是公用的,不一定非要通过对象调用 .
    所以静态方法不能调用非静态方法,但是非静态方法可以调用静态方法
      

  10.   

    一个静态的东西,就是类的东西,它是随着类的存在而存在的,
    不是依靠对象,而非静态方法是对象的方法。你没有创建对象
    就不能用静态方法去调用非静态方法。如果调用了并且没有实例化。就相当于一个存在的东西里面包含不存在的东西。这样是不行的。
    既然已经存在,为什么里面有不存在呢,不是矛盾么?
    好好的理解一下吧!楼主加油。