2017-08-30 63 views
1

覆盖子接口中接口的方法/方法背后的原因是什么?在子接口中覆盖接口的方法/方法背后的原因是什么?

例如

interface I{ public void method();} 
interface I2 extends I{@Override public void method();} 
+0

你没有做到这一点,如果这是你的问题? – Yazan

+0

你得问问I2的作者。当你在这里时,问为什么它有这样一个可怕的毫无意义的名字,为什么它有0个文档,为什么它甚至没有正确格式化/缩进。如果你发现一个**真实**的例子,那么问一下(但是javadoc应该让你理解为什么,并且大部分时间能够为该方法添加/修改文档是原因,就像https://docs.oracle.com/javase/8/docs/api/java/util/List.html#equals-java.lang.Object-) –

+0

我在Spring API实现中发现它。 – subhashis

回答

5

您可能需要您的方法的返回类型更改为子类型的原始返回类型。例如:

interface I { 
    public Object method(); 
} 

interface I2 extends I { 
    @Override 
    public Integer method(); 
} 

也可以添加default实施,这是在Java中8.如介绍的方法:

interface I { 
    public void method(); 
} 

interface I2 extends I { 
    @Override 
    default public void method() { 
     System.out.println("do something"); 
    } 
} 
+1

很好的答案。 btw这里的'public'关键字是多余的,除了在Java 9中你可以在接口中使用私有方法。 –

+0

@KlitosKyriacou是的,你是对的。 –