先贴上代码一小段:
public class Main {
    int x =1;
    public static void main(String[] args) {
        Main A = new Main();
       int m = A.x;   //main为静态方法,A.x为实例变量,试问为什么能从静态方法中引用非静态变量?
    }
}
看书看到头晕,跟几个同学都迷惑在这一句中,求大侠解释!

解决方案 »

  1.   

    静态方法是不能直接访问到非静态的属性,但是你看看你的程序是谁在访问x这个属性呢?是A ,是A在访问而不是main这个静态方法在访问。。所以你应该明白了吧。。
      

  2.   

    A.x不是直接引用了啊之所以迷惑,是因为不知道原因
    之所以不能直接引用,是因为非静态变量必须有某个对象实例化了才会存在
    而静态方法无需任何实例化对象就已经存在
    这样如果引用非静态变量,引用哪个实例对象的呢?A.x不一样,A是一个实例化了的对象,当然可以引用A.x
      

  3.   

    感谢~可以结贴了
    访问x的是A,而A是一个局部变量