2017-08-30 61 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是的,你是對的。 –