超类方法和接口默认方法冲突解决
考虑下面的例子,
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版本是火星发布(4.5.0),如果它很重要的话。