Java:如何在覆盖方法(祖 parent 方法)中调用 super().super()

标签 java

<分区>

Possible Duplicate:
Why is super.super.method(); not allowed in Java?

我有 3 个类,它们相互继承如下:

A
 ↳
   B
    ↳
     C

在每个类中我都有以下方法:

protected void foo() {
    ...
}

C 类中 我想从 A 类中调用 foo 而不是在 B 中调用 foo :

protected void foo() {
    // This doesn't work, I get the following compile time error:
    // Constructor call must be the first statement in a constructor
    super().super().foo(); 
}

编辑
一些上下文信息:
B 类是我们实际使用的类。 C类是一个单元测试类,它有一些修改。 B 中的 foo 方法做了一些我们不想做的事情,所以我们在 C 中重写了它。但是 A 类中的 foo 很有用,需要调用。

最佳答案

  • 要调用父类(super class)中的方法,您可以使用 super.foo(),而不是 super().foo()super()调用父类的构造函数。
  • 无法调用 super.super.foo()。您可以在 B 类中添加对 super.foo() 的调用,以便在 C 中调用 super.foo() 时,将调用 super.foo() B 中的 又会调用 A 中的 foo()

关于Java:如何在覆盖方法(祖 parent 方法)中调用 super().super(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11935895/

相关文章:

java - 如何将类型安全对象强制转换为 JComboBox<String>?

java - 在Java中使用SQL创建表数据库

java - 用 Java 构建一个简单的 I/O Run Tracker 应用程序。我应该如何存储秒和分钟?

Java数组存储超过上限

java - 如何对列表中的元素子集进行修改

java - 与主要 Activity 通信的 fragment

java - 在 Java 中合并两个 XML 文件并添加额外信息

java - 我如何使用警报生成器对话框来显示消息

java - 使用 JFileChooser 将文件插入到 Jlabel 中

java - DYMO LabelWriter 450 DUO 从命令行打印 .label 文件