a.i 取的是class A里面定义的变量i
b.i 取的是class B里面定义的变量i

解决方案 »

  1.   

    给a赋值b,a原来指向的实例就应该不存在了。
    a.i如何会取class A里面定义的变量i?
    还是不明白。
      

  2.   

    而且class A中的i是非静态变量,如何取?
      

  3.   

    a的值是B的实例,而B继承了A, 所以B含有两个变量i. 一个是B自己定义的,一个是从A继承过来的。 用b.i取到的就是B自己定义的,a.i取到的就是从A继承过来的.
    B b=new B();
    System.out.println("b.i= "+b.i); //B自己定义的A a = b;
    System.out.println("a.i= "+a.i); //从A继承过来的.
    因为a是A类型的变量,所以a.i取的是A里面定义的那个i
      

  4.   

    jkit(郁闷之堕落的程序员) 说的对,就是这个道理。