我在学习JDBC时遇到了几个接口 - 连接,语句,结果集等......
这是否暗示某些隐藏在我身边的类正在实现这些接口,并在需要时提供它们的引用?这是因为根据我使用的驱动程序,它们需要以不同的方式实现吗?
答案 0 :(得分:2)
是的,你是对的。可以在数据库JDBC驱动程序中找到这些接口的实现。
答案 1 :(得分:1)
在JDBC驱动程序的特定情况下,你是对的。各个驱动程序jar包含必要接口的实现。
在其他情况下,例如Calendar对于一个众所周知的示例,您可以查看已知子接口和直接实现的文档。当然,Sun的文档只列出核心Java库中存在的子接口和子类。您可以在第三方库中找到许多其他实现,例如Apache Commons或您自己的代码。
答案 2 :(得分:0)
这是因为根据我使用的驱动程序,它们需要以不同的方式实现吗?
例如。由于多种原因,通常最佳做法是编写接口而不是实现(=在此上下文中为类)。其中一个已被您提及:相关但不同的实现可以共享一个公共接口。另一点是,可以在幕后更改一个特定的实现,而不需要更改接口:假设驱动程序的下一个实现需要使用另一个类。它足以实现现有的接口。
现在想象代码不是接口,代码处理类类型。现在,如果实现发生了变化,那么这些接口也需要更改。这意味着API的每个用户(包括您)都必须更改其代码!
答案 3 :(得分:0)
正如Johannes所说,实际的DB驱动程序实现了这些类。关键是您可以在不对代码进行任何实际更改的情况下切换驱动程序。