一个扩展多个接口的接口

3

以下代码:

interface I3{
    boolean abc();
}; 
interface I2{
    void abc();
};
public class Example1  implements I3, I2{
    @Override
    public void abc() {
        //Eclipse IDE picked this unimplemented method with the compiler error

    }
}

程序员有责任避免陷入这种情况吗?

为什么Java允许接口继承多个接口?当Java已经避免了类继承多个超类的类似问题时?

如果从多个接口继承了类似的常量,则在子类中使用interfacename.constantname可以避免歧义。


最好的做法是尝试自己编译并查找错误。它会抛出一个错误,指出“返回类型与I3.abc()不兼容”。 - Codebender
两个方法的返回类型冲突,则会导致编译错误。这是“继承”、“方法覆盖”的一般规则。 - SatyaTNV
@Satya "override" 的定义是:如果未继承的方法不是抽象的,则新声明被称为覆盖它。 在这种情况下,方法 abc 是抽象的。 - overexchange
@overexchange 请查看此链接 https://dev59.com/1XE85IYBdhLWcg3wYicB - SatyaTNV
2个回答

0

是的,避免陷入这种情况绝对是程序员的责任。

接口是实现多重继承的一种方式,我们不能让JVM混淆这些冲突。


你能告诉我为什么要给这个答案点踩吗?是我说错了什么吗? - Anthony Raymond

-1

因为两个abc()方法具有相同的签名(返回类型不是方法签名的一部分),Java 无法区分它们,从而导致冲突。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接