In diesem Beispiel auf Java-Tutorial Tutorial page. Zwei Schnittstellen definieren die gleiche Standardmethode startEngine()
. Eine Klasse FlyingCar
implementiert beide Schnittstellen und muss wegen des offensichtlichen Konflikts startEngine()
überschreiben.Verwirrt über "Super" -Schlüsselwort in diesem Java-Beispiel
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);
}
}
Ich verstehe nicht, warum, von FlyingCar
, super
verwendet wird, um beide Versionen von startEngine()
in OperateCar
und FlyCar
Schnittstellen zu verweisen. Wie ich es verstehe, startEngine()
wurde in keiner Super-Klasse definiert, sollte daher nicht als resident in einem bezeichnet werden. Ich sehe nicht, auch eine Beziehung zwischen super
und den beiden Schnittstellen wie in realisiert FlyingCar
' Super bedeutet für sich die Oberklasse. 'FlyCar.super' ist neu in Java 8 und bedeutet die Implementierung in der Oberfläche' FlyCar'. – immibis
Siehe http://stackoverflow.com/questions/19976487/explicitely-calling-a-default-method-in-java – Eran
Warum lesen Sie dieses Tutorial nicht nur den Beispielcode extrahieren? – Holger