当前位置:编程学习 > JAVA >>

java接口中不能理解的一个问题 谢谢大家

jdbc中 java.sql包 定义了connection接口 接口里面不是说全部都是空方法吗 ,没有任何实现
所以  connection 不能 new connection()对象 需要 DriverManager.getconnection() 返回 conn对象
那conn为什么能执行conn.close()方法?我也没有重写close()方法啊  close()不是一个空方法吗  ...

类似情况API中还有很多 不知道为什么能调用而不需要重写 ,请高手解释下
  谢谢大家,
jdbc --------------------编程问答-------------------- 因为你导入了一个jar包。 --------------------编程问答-------------------- 以后遇到这种问题 多看看源代码吧 追踪一下 

我用mysql举例说明下 

最后返回的是这个 

Connection newConn = com.mysql.jdbc.ConnectionImpl.getInstance(host(props), port(props), props, database(props), url);

close的 最终的实现在这个类里 ConnectionImpl

--------------------编程问答-------------------- 建议看一下什么是编译时类型和运行时类型 --------------------编程问答-------------------- 其实 java这样做只是定义了一个接口规范,具体的实现由各个数据库厂商来负责  --------------------编程问答-------------------- DriverManager 返回的是一个实现了 Connection 接口的类的一个实例

用 System.out.println() 打印这些信息,你会了解更多
conn.getClass().getName();
conn.getClass().getInte易做图ces(); // 返回数组 --------------------编程问答-------------------- 查看源代码是最好的办法!!或者看api --------------------编程问答-------------------- 关键点在于:
    1. Connection是接口,方法如你所说全是空的
    2. DriverManager.getconnection() 返回的是一个对象,该对象继承自Connection接口
    3. 继承自Connection对象的意思是,重写了接口里面的方法 --------------------编程问答-------------------- 楼上几位都说的很详细  理解了 谢谢
补充:Java ,  Java SE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,