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



如果基类和派生类具有相同的字段名,那么我们使用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
}

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

在类中,与超类中的字段同名的字段将隐藏超类的字段,即使它们的类型不同。在子类中,超类中的字段不能通过其简单名称引用。相反,必须通过super访问该字段。

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

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

  1. (GrandParent)this).name- 向上投射到GrandParent
  2. GrandParent.class.getDeclaredField("name").get(this)- 反射提取

最新更新