我有兩個有關Java接口的問題。 1)如果一個類碰巧實現了接口I的所有接口方法,而沒有聲明自己實現它們,它仍然可以用作I型變量的輸入嗎? 2)實現接口I的類A的子類是否繼承了該接口的一致性,還是應該聲明自己實現了I?在Java中的接口實現的繼承
3
A
回答
16
如果一個類實現所有 接口I, 的接口方法,而沒有宣佈自己爲 實現它們,可它仍然可以 用作送入 我類型的變量?
不,你所描述的更類似於duck typing。
請問A級這 實現接口我繼承了 符合該接口,或 應該也宣佈自己作爲 實現我的一個子類?
假設你的意思是:
public class A implements I { /* ... */ }
public class B extends A { /* ... */ }
在這種情況下,B
實現I
。
2
- 它意味着「它能滿足Liskov替代原則嗎?」,答案是「否」。
- B類符合它的父類,不需要重新聲明該接口。
回答這些問題的最好方法是嘗試 - 試試看看。
+1
+1只是爲了「爲什麼你不問之前嘗試它?」點 - 值得傳送更多的東西。 – delfuego 2009-12-24 19:51:35
0
- 不,接口必須明確實施。
- 由基類實現的接口通過擴展總是由派生類實現。
+0
作爲推論,實現接口的抽象類可能會將實現推遲到具體的子類:http://java.sun.com/docs/books/tutorial/java/IandI/abstract.html – trashgod 2009-12-24 21:48:28
相關問題
- 1. 接口實現與繼承在C#
- 2. 如何在接口中使用java實現多繼承?
- 3. 實現接口擴展屬性(?繼承)
- 4. 實現/接口繼承設計問題
- 5. Groovy無法實現使用繼承和泛型的Java接口
- 6. 在vb.Net中實現繼承的通用接口
- 7. 在C++中使用繼承的具體類來實現接口
- 8. 如何在繼承自SocketAsyncEventArgs的類中實現IDisposable接口
- 9. 實體框架中的接口繼承
- 10. Java集合接口中的繼承
- 11. Java接口和繼承
- 12. 接口和繼承java
- 13. 擴展類中的接口和抽象類的繼承,實現
- 14. C中的接口繼承#
- 15. Visual Studio - 自動實現接口中的所有繼承方法
- 16. 活動中實現Fragment接口的循環繼承
- 17. Java中接口的實現
- 18. 實現接口在Java中
- 19. 在java中實現接口
- 20. 在MySQL中實現繼承
- 21. Java繼承接口的過載方法
- 22. 選擇繼承或接口以在Java中實現設計模式?
- 23. 泛型:從實現的接口的抽象類繼承
- 24. 實現繼承
- 25. 是否有可能繼承接口的實現
- 26. 存儲庫模式的通用接口繼承和類實現
- 27. C#:關於接口,實現和繼承的困惑
- 28. C#繼承保護的方法實現接口
- 29. 繼承在CoffeeScript中的實現
- 30. 爲什麼java類不會從已實現的接口繼承註釋?
怎麼樣: public interface I {public void hey(); } public class X {public void hey(){/*...*/} public class A extends X implements I {} 這是行不通的嗎? – Dois 2014-12-04 17:10:41