在java網站教程page的示例中。兩個接口定義了相同的默認方法startEngine()
。類FlyingCar
實現了兩個接口,並且必須覆蓋startEngine()
,因爲存在明顯的衝突。對此Java示例中的「超級」關鍵字感到困惑
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
被用來指的startEngine()
兩個版本在OperateCar
和FlyCar
接口。據我瞭解,startEngine()
沒有在任何超級類定義,因此不應該被稱爲一個駐地。我還沒有看到super
和兩個接口之間的任何關係,如FlyingCar
'超級本身意味着超類。 'FlyCar.super'在Java 8中是新的,並且意味着在'FlyCar'界面中的實現。 – immibis
請參閱http://stackoverflow.com/questions/19976487/explicitly-calling-a-default-method-in-java – Eran
爲什麼不閱讀該教程而不是僅僅提取示例代碼? – Holger