我看到一個代碼,其中有兩個接口有一些方法與兩個方法具有相同的名稱。然後有一個類實現了這些接口,我認爲它不應該編譯,因爲方法名稱不明確。爲什麼它工作正常。接口實現混亂?
Q
接口實現混亂?
2
A
回答
2
發生此問題的每種語言都會以不同的方式解決問題。在某些語言中,這可能是一個錯誤; C++就是這樣。但是在Java中,只要這兩種方法具有兼容的異常規範 - 即只要實際上可以實現滿足兩個接口的方法,那麼語言規範就特別允許這樣做。一種方法滿足每個接口,並且一切都很好。詢問該方法屬於哪個接口是毫無意義的;它屬於兩者,或者屬於無。
請注意,您可以通過方法x()
獲得一個類,然後使用一個子類來擴展該類,該子類聲明自己實現了一些包含方法x()
的接口;孩子會使用繼承的方法自動滿足接口,而接口本身並不知道接口方法。如您所見,Java接口純粹是聲明式的;他們並不關心方法來自哪裏,只是所討論的類包含它們。
我不會說PHP,但也許它是一樣的,但我相信它在一些小細節上有所不同。
+0
感謝您的回答。 –
0
如果方法相同,方法名稱中不會有歧義。
所以,從本質上講,Java沒有問題,因爲實現類只應提供一個實現。
相關問題
- 1. 接口實現的混亂
- 2. 在實現用於編程皮質的usb接口時出現混亂m3
- 3. 混亂ServerSocket的(端口)
- 4. Python 2.7版進口混亂
- 5. 接口實現
- 6. 實現接口
- 7. 實現接口
- 8. 實現接口
- 9. 模板實例混亂
- 10. 對象實例混亂
- 11. 接口實現使得我的UML類圖凌亂
- 12. 指針間接混亂
- 13. javax.sql.DataSource連接池混亂
- 14. 的std ::實驗::可選<T>實現:Constexpr構造混亂
- 15. 實現和接口
- 16. 實現接口C#
- 17. 實現AIDL接口
- 18. Java接口實現
- 19. GetEnumerator接口實現
- 20. 實現Iterable接口
- 21. 實現IConvertible接口
- 22. 類設計:類實現接口實現另一個接口
- 23. 將顯式接口實現重構隱式接口實現
- 24. 接口實現時不透露實現接口的類
- 25. 實現與接口集合的接口
- 26. 在接口中實現接口屬性?
- 27. SOAP客戶端端口混亂
- 28. 核心數據父子上下文實現混亂
- 29. 從界面實現通用方法而沒有混亂?
- 30. 增強現實方位/標題/方位混亂。 (iphone ARKit代碼)
Class1.Method,Class2.Method,這是他們如何不同。沒有歧義。 – atoMerz
是關於PHP或Java的問題嗎? – Mat
@Mat這個問題是通用的,我嘗試了兩種語言。所以我把它標記爲開放以迴應任何社區。 –