a是一个A对象,但获得了一个指向B的reference(引用)
所以a.i是改变了a(A)中的i,
但a.println()调用的是B中重载的方法,而B中println()方法获得的i是0

解决方案 »

  1.   

    但B中的i不是也隐藏了A中的i了吗
      

  2.   

    print的i用的是classB里的i
    B中的i是它自己的i,把A中i覆蓋掉了
      

  3.   

    如果访问A中的i,i=6;
    B中的i,i=0;
      

  4.   

    建议你写两个construct method,如public A() { i=0; }和
    public B() { i=1; },就会知道在class B范围内重新申明的i起作用,而class A中申明的i不会在B中起作用,A a = new B();这样定义一个对象a,在对象a中两个i存在,并指向两个不同的引用。不知道这样回答,是否清楚?