我在父类里边定义一个变量,在子类的main函数中调用,提示非静太变量不能在静态 的变量中使用,难道非要将父类中的变量定义为静太的才能在子类的main函数中使用么.能不能具体的分析一下内存,说明一下为什么!

解决方案 »

  1.   

    那是因为你的main是static,当然只能直接访问static的变量啦!
      

  2.   

    楼上说的对,你看看static 方法,只能访问非本方法之外的静态变量,或是该方法所属类的实例的变量....
      

  3.   

    static声明的变量存放在静态存储区中,相当于全局变量 也就是说只要有一个函数对它进行了修改 其他的函数得到的是这个变量的新值由于它分配在静态存储区,所以他也只能被静态函数调用
      

  4.   

    static特性就是程序一加载就实例的。你用一个nonstatic的变量在static中是不能确定变量值的。所以不能在static的main()方法中使用nonstatic的变量。建议看看《java编程思想》或其他java基础书籍
      

  5.   

    main定义成静态方法只能调用静态数据或其他的静态方法,记住这个原则就好了
      

  6.   


    原因是static修饰的不论是变量还是方法,都是在类没有实例化时前就被JVM加载了,
    而你的变量如果没有static修饰的话,只有在类实例化后才可以访问到,
    所以你在static的方法里访问普通变量是就会出现这种异常了
      

  7.   


    shibenjie  说的很清楚,静态变量和静态方法是在第一次被调用加载到内存的
    非静态变量是每次实例化都要加载到内存!相对静态变量和方法来说,它是不确定的!
      

  8.   

    非static的变量是在实例化对象的时候才被JVM加载的.
    想要使用该变量要先实例化该对象.