我在學習JDBC時遇到了幾個接口 - 連接,語句,結果集等...
這是否意味着某些隱藏在我身邊的類正在實現這些接口,並在需要時提供它們的引用?這是因爲他們需要根據我使用的驅動程序而有所不同嗎?誰/什麼實現我可以直接使用的接口?
2
A
回答
0
這是因爲他們需要根據我使用的驅動程序而有所不同嗎?
例如,由於多種原因,將代碼編寫爲接口而不是實現(=在此上下文中)是一般的最佳實踐。其中之一已被你提到:相關但不同的實現可以共享一個通用接口。另一點是,一個特定的實現可以在幕後改變,而不需要改變接口:假設下一個驅動程序的實現需要使用另一個類。足以實現現有的接口。
現在想象一下,代替接口,代碼處理類類型。現在,如果實現改變了,這些接口也需要改變。這意味着API的每個用戶(包括您)都必須更改他們的代碼!
2
是的,你是對的。這些接口的實現可以在數據庫JDBC驅動程序中找到。
0
正如Johannes所說,實際的DB驅動程序實現了這些類。關鍵是你可以切換驅動程序,而不必對代碼進行任何修改。
1
在JDBC驅動程序的特定情況下,您是正確的。單獨的驅動程序罐持有必要接口的實現。
在其他情況下,例如Calendar對於一個衆所周知的示例,您可以檢查文檔已知的子接口和直接實現。當然,Sun的文檔只會列出核心Java庫中存在的子接口和子類。您可能會在第三方庫中找到許多其他實現,例如Apache Commons,或者在您自己的代碼中。
相關問題
- 1. 爲什麼我們要實現接口?
- 2. 爲什麼我們重新實現對類派生接口的父接口它們實現派生的接口
- 3. 我們可以在c#中使用接口實現多態嗎?
- 4. 我可以在C#中使用子類實現接口嗎?
- 5. 爲什麼我們在這裏使用接口實現?
- 6. 直接實現接口並通過另一接口實現它有什麼區別嗎?
- 7. 可以重載接口的實現嗎?
- 8. 爲什麼匿名類不能實現兩個分離的接口,但可以實現內部接口?
- 9. 何時以及爲什麼我們必須實現Comparable接口?
- 10. 爲什麼顯式的接口實現?
- 11. Spring單元測試:自動直接實現接口的實現?
- 12. 爲什麼實現Serializable接口的類實現none接口的方法?
- 13. Java中的多態性和接口(可以使用多態性來實現接口......爲什麼?)
- 14. C++ 11已實現的接口方法不可用。爲什麼?
- 15. 爲什麼要實現一個通用接口,使其不直觀?
- 16. 接口實現可比?
- 17. 爲什麼SortedList實現使用ThrowHelper而不是直接拋出?
- 18. 爲什麼不能使用實現類型的接口列表?
- 19. 爲什麼「僅實現接口顯式」僅僅有時可用,而不是「實現接口」(即隱含地)?
- 20. 我可以直接使用保存按鈕在窗口功能
- 21. 我可以直接使用MySQL服務端口和Node js嗎?
- 22. 我可以發現JMX接口嗎?
- 23. 爲什麼實現接口的抽象類可能會錯過接口方法之一的聲明/實現?
- 24. 爲什麼我們可以調用接口org.w3c.dom.Document的方法?
- 25. 實現相同接口的接口內的內部類,我們通過這個實現了什麼?
- 26. 接口實現
- 27. 實現接口
- 28. 實現接口
- 29. 實現接口
- 30. 是否可以使用.NET泛型類實現COM接口?