我在学习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接口?