假设有以下Java代码片段: ```java interface A { default void print() { System.out.println("A"); } } interface B { default void print() { System.out.println("B"); } } class C implements A, B { } public class Test { public static void main(String[] args) { new C().print(); } } ``` 关于上述代码的执行结果和原因,下列哪种说法最为准确?

答案解析

选项C正确。当一个类实现多个接口,且这些接口中存在相同签名的默认方法时,Java会产生冲突,导致编译错误,这就是菱形继承问题的一种体现。Java不允许类自动选择调用哪个接口的默认方法,必须在实现类中重写此方法以消除歧义。选项A和B错误,接口的顺序不会影响最终的结果,即便调整顺序也不会输出任何结果,因为编译会报错。选项D错误,Java会明确地报错,而不是依赖JVM的实现,所以结果是确定的:编译时会产生错误。
正确答案:C
随机推荐
开始刷题