考虑下面的例子,
public class Testing extends SupCls implements Intf {
public static void main(String[] args) {
new Testing().test();
}
}
class SupCls {
public void test() {
System.out.println("From SupCls");
}
}
interface Intf {
public default void test() {
System.out.println("From Intf");
}
}
如您所见,SupCls
类和Intf
接口之间没有联系。但两者都定义了一种通用方法。
并且Testing
类正在扩展SupCls
和实现Intf
。
所以,当我在输出上调用test()
方法时,Testing
From SupCls
我认为这是有道理的,因为从类扩展应该比从接口实现具有更高的优先级。
但 eclipse 会报告其他情况,如下面的屏幕截图所示。
我坚信这是Eclipse 中的一个错误。
但在假设之前,这种行为是否在JLS中定义和记录?还是有其他东西定义了这种行为?
编辑:如果重要的话,Eclipse 版本是Mars Release (4.5.0) 。