Diamond Problem
Last updated
interface A {
default void show() {
System.out.println("A's show");
}
}
interface B extends A {
default void show() {
System.out.println("B's show");
}
}
interface C extends A {
default void show() {
System.out.println("C's show");
}
}
class D implements B, C {
public void show() {
// Must resolve ambiguity explicitly
B.super.show(); // or C.super.show()
}
}
public class Test {
public static void main(String[] args) {
D d = new D();
d.show(); // Output depends on which super.show() is called
}
}