java - 如何在多级继承中访问父类(super class)的相似字段

标签 java inheritance

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

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 class)中的字段同名的字段会隐藏父类(super class)的字段,即使它们的类型不同。在子类中,父类(super class)中的字段不能通过其简单名称来引用。相反,必须通过 super 访问该字段。

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

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

  1. (GrandParent)this).name - 向上转换为 GrandParent
  2. GrandParent.class.getDeclaredField("name").get(this) - 通过反射提取

关于java - 如何在多级继承中访问父类(super class)的相似字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51162025/

相关文章:

java - 如何在java中使用opencsv有效地将行添加到现有的csv文件?

ios - Swift:将泛型类型转换为相同的泛型类型但具有关联类型的子类

ruby - 从父类(super class)调用子类方法 - 设计模式

java - 将父对象分配给子对象而无需在 Java 中进行强制转换

java - Guice 可以根据一个参数自动创建不同类的实例吗?

来自 Vertx 和 AMQPBridge 的 Java 运行时警告

c# - 将实现哪个接口(interface)?

java - Hibernate:从单个表中获取所有记录,无论使用 @DiscriminatorValue 定义的类型如何

java - 如何在java中模拟一个不返回任何内容的函数

java - getGraphics() 返回空值