class t2 {
    int i = 10;
}public class t
    extends t2 {
    void p() {
        System.out.println(super.i);
        t2 t2 = new t2();
        t2.i = 20; //我在这里已经将父类的i变成20了
        System.out.print(super.i); //为什么在这里显示的还是10啊,求助,谢谢    }    public static void main(String[] args) {
        t t = new t();
        t.p();
    }
}

解决方案 »

  1.   

    t2 t2 = new t2();
            t2.i = 20; //我在这里已经将父类的i变成20了这里你已经实例化另外一个对象了,你打应的却是super.i也就是主类的对象t
    所以是10.
      

  2.   

    t2 t2 = new t2()
    这个语句是不是有问题呢?!
    而且楼上也说了
    super.i的值并不是你声明的对象的值!
      

  3.   

    super.i,这里的i是父类的,不是某个对象的,所以不变
      

  4.   

    class T2 {
        int i = 10;
    }public class Test
        extends T2 {
        void p() {
            System.out.println(super.i);
            T2 t2 = new T2();
            t2.i = 20; //我在这里已经将父类的i变成20了
            System.out.println(super.i); //为什么在这里显示的还是10啊,求助,谢谢
            this.i =20;
            System.out.println(super.i);    }    public static void main(String[] args) {
            Test t = new Test();
            t.p();
        }}