【发布时间】:2015-12-16 06:51:11
【问题描述】:
众所周知,Java 可以实现多个interfaces。它们的实施顺序重要吗?我的意思是,在Java 8 中实现 B、C 是否与 C、B 相同?我的测试显示顺序是否很重要 - 但任何人都可以解释这背后的逻辑吗?
public interface A {
public default void display() {
System.out.println("Display from A");
}
}
public interface B extends A {
public default void display() {
System.out.println("Display from B");
}
}
public interface C extends A {
public void display();
}
public interface D extends B, C {
}
上面的代码工作正常。如果我把B, C的顺序改成C, B,会报错:The default method display() inherited from B conflicts with another method inherited from C.
public interface D extends C, B {
}
编辑
我正在使用 Eclipse(火星)。 JDKjdk1.8.0_51。 JREjre1.8.0_60.
【问题讨论】:
-
我错过了什么吗?如果我理解正确,您说使用一个订单时会出错,而使用其他订单时不会出错,这意味着订单有所不同,这意味着您回答了自己的问题。
-
是的,我明白了。我只是想知道这背后是否有任何原因?
-
无论顺序如何,您都应该得到相同的错误(意思是,在这两种情况下)。请再次检查!
-
不;无论哪种方式都编译错误...
标签: java interface java-8 default-method