请问怎样访问父类的父类的同名属性?
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,代码该如何写?????????????
}
}
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,代码该如何写?????????????
}
}
如果存在隐藏,只能通过super访问父类中的东西
super().i;
this.i;
void show()
{
A a = new A();
System.out.println(a.i); //A中的
System.out.println(super.i); //B中的
System.out.println(this.i); //C中的
}
{
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 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访问父类定义的属性,但是不能访问父类的父类的属性”?????????????????????
System.out.println(a.i);