请问怎样访问父类的父类的同名属性?
class  A 

    public int i= 10; 
} class B  extends A 

    public int i= 8; 
} class C  extends B 

    public int i= 6;   void show() 
  { 
      //我既想访问C自身的i,又想访问B中的i, 还想访问A中的i,代码该如何写????????????? 
  } 

解决方案 »

  1.   

    给A类一个访问i的方法了,然后super。
      

  2.   

    无法访问。
    如果存在隐藏,只能通过super访问父类中的东西
      

  3.   

    new A().i;
    super().i;
    this.i;
      

  4.   


      void show()
      {
    A a = new A();
    System.out.println(a.i);     //A中的
    System.out.println(super.i); //B中的
    System.out.println(this.i);  //C中的
      }
      

  5.   

     void show() 
      { 
    A a = new A(); //在类A中创建一个对象
    System.out.println(a.i);    //访问类A中的属性i 
    System.out.println(super.i); //类C继承了类B的属性i,通过super调用父类B的属性 
    System.out.println(this.i);  //this.i指的是当前的类C中的属性,(this指代调用当前类的对象)
      }
      

  6.   

    void show() 
      { 
    A a = new A(); //在类A中创建一个对象 
    System.out.println(a.i);    //访问类A中的属性i 
    System.out.println(super.i); //类C继承了类B的属性i,通过super调用父类B的属性 
    System.out.println(this.i);  //this.i指的是当前的类C中的属性,(this指代调用当前类的对象) 
      }
    -------------------------------------------------------------------------
    A类中的i还是无法通过C类对象来访问,您的方法是: 先建立一个A类对象,然后再访问A类对象的i属性
    难道正如:ZangXT  2楼所说的, 
    “一个类可以通过super访问父类定义的属性,但是不能访问父类的父类的属性”?????????????????????
      

  7.   

    A a = new C();
    System.out.println(a.i);