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