如何在多级继承中访问超类的相似字段

时间:2018-07-03 19:55:46

标签: java inheritance

如果基类和派生类具有相同的字段名称,则我们使用super关键字访问基类字段。但是在多级继承的情况下,每个类中都有相同的字段名称,那么如何在子类中访问父类的字段名称。

class GrandParent {
  String name;
}

class Parent extends GrandParent {
  String name;
}

class Child extends Parent {
  String name;
  //now here, how to access GrandParent name field
}

1 个答案:

答案 0 :(得分:2)

这里没有多重继承。您的代码段演示了隐藏字段

在一个类中,与超类中的字段具有相同名称的字段将隐藏超类的字段,即使它们的类型不同。在子类中,无法通过其简单名称引用超类中的字段。而是必须通过super访问该字段。

super仅允许您向下看到一个成员(=直接父成员)。像super.super这样的链在语法上被认为是无效的。

但是至少有两种方法可以实现您想要的:

  1. (GrandParent)this).name-上载到GrandParent
  2. GrandParent.class.getDeclaredField("name").get(this)-通过反射提取