java - 如何在覆盖实现中调用接口(interface)的方法的默认实现?

标签 java default

假设我有以下代码:

interface HumanoidForm {
    default HumanoidForm reproduce() {
        <appropriate code for humanoid form reproduction>
    }
}

class Android extends Machine implements HumanoidForm {
    public HumanoidForm reproduce() {
        <appropriate code for android reproduction> // how to use HumanoidForm's default implementation here?
    }
}

现在假设“用于机器人复​​制的适当代码”最好通过使用“用于类人形式复制的适当代码”作为子例程来描述。我怎样才能从“机器人复制的适当代码”中访问“人形形式的适当代码”?我可以想到三种方法,但都不起作用:

  • 只需调用 reproduce() 即可调用覆盖实现。
  • 编写 ((HumanoidForm) this).reproduce() 仍然会调用覆盖实现。
  • 通过覆盖方法来模仿父类(super class)中方法实现的重用,人们可能会想到编写 super.reproduce()。但是,那指的是机器对重现的实现,它甚至可能不存在。

因此似乎没有办法重新使用默认方法中的代码进行覆盖。真的是这样吗?

最佳答案

HumanoidForm.super.reproduce();

关于java - 如何在覆盖实现中调用接口(interface)的方法的默认实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32661521/

相关文章:

java - openbsd:限制网络带宽

javascript - cvc-复合体类型.2.4。发现以元素 'dw:transform-message' 开头的无效内容

php - 在 php 中不能有名为 default 的函数

windows - 将批处理脚本或 EXE 设置为 Windows 7 中的默认浏览器

python - 将默认 python 更改为另一个版本

java - 用于实例化内部类的奇怪语法

java - 使用 Java 创建符号链接(symbolic link)

java - 如何添加游戏计时器?

c++ - 如何设置枚举类型变量的默认值?

c++ - Null 作为默认模板参数