【发布时间】:2016-01-16 15:57:52
【问题描述】:
在java网站的教程page的这个例子中。两个接口定义了相同的默认方法startEngine()。一个类FlyingCar 实现了这两个接口,并且由于明显的冲突必须覆盖startEngine()。
public interface OperateCar {
// ...
default public int startEngine(EncryptedKey key) {
// Implementation
}
}
public interface FlyCar {
// ...
default public int startEngine(EncryptedKey key) {
// Implementation
}
}
public class FlyingCar implements OperateCar, FlyCar {
// ...
public int startEngine(EncryptedKey key) {
FlyCar.super.startEngine(key);
OperateCar.super.startEngine(key);
}
}
我不明白为什么,从FlyingCar 开始,super 用于在OperateCar 和FlyCar 接口中指代startEngine() 的两个版本。据我了解,startEngine() 没有在任何超类中定义,因此不应被称为常驻类。我也看不出super 和FlyingCar 中实现的两个接口之间有任何关系
【问题讨论】:
-
super本身表示超类。FlyCar.super是 Java 8 中的新内容,表示接口FlyCar中的实现。 -
您为什么不阅读该教程而只是提取示例代码?
标签: java interface java-8 super default-method