只是爲了好奇,我嘗試這樣做:具有相同名稱的繼承方法,它是如何工作的?
public interface test1 {
public Object method1(String str);
}
public interface test2 {
public Object method1(String str);
}
public class Test implements test1, test2 {
public static void main(String... args) {
}
public Object method1(String str) {
return new Object();
}
}
我從Eclipse的期待某種錯誤的在線public class Test implements test1, test2 {
,卻沒有一個。
- 爲什麼沒有編譯時錯誤,因爲有方法名稱的衝突 ?
- 在
class Test
中繼承了多少種方法? - 如果上述問題的答案是2,那麼究竟我們實現了哪種方法 ?
- 而在運行時,如何正確實施的方法是 被選中?而不是另一個?
- 最後,有沒有一種方法來實現兩者? (我幾乎可以肯定,答案是否定的)
我知道從設計的角度來看,這可能不會發生在現實世界的情況下,但正如我剛纔提到的,它剛剛來到我的思想和我試了一下。
任何澄清/參考非常感謝。
有什麼問題?這兩個接口都承諾任何實現它們的類都有一個方法'method1(String)',你的'Test'類實現了這個承諾。 –
如果你有interface1 {public int method1(String var); }和interface2 {public String method1(String var); }。那麼你會得到一個錯誤,因爲沒有執行其中的一個(你無法解決這個問題。) –
@Angelo Neuschitzer:但在那種情況下根本就沒有碰撞 – Bhushan