假设我有以下代码:
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/