返回信息流JAVA 连接数据库的时候:
Connection conn = DriverManager.getConnection(url,username,password);//接口声明变量,ok
。。。。
conn.close();
1.为什么connection是接口,还能调用它的方法呢?
2.static Connection getConnection(String url, String user, String password)这是DriverManager的getConnection方法签名。
“接口变量必须引用实现了接口的类对象”《core java》
为什么这里看起来Connection的变量引用了一个Connection对象??
这是一条镜像帖。来源:北邮人论坛 / java / #16746同步于 2010/12/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
求助:关于interface java.sql.Connection
o0allen0o
2010/12/8镜像同步12 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
多态吧
【 在 o0allen0o (allen) 的大作中提到: 】
: Connection conn = DriverManager.getConnection();//接口声明变量,ok
: conn.close();
: 1.为什么connection是接口,还能调用它的方法呢?
: ...................
【 在 ppooooll 的大作中提到: 】
: 多态吧
: 【 在 o0allen0o (allen) 的大作中提到: 】
: : Connection conn = DriverManager.getConnection();//接口声明变量,ok
: ...................
你的意思是conn引用的是一个实现了Connection接口的类的实例是么?可是我查看java api 文档,DriverManaget.getConnection()返回的就是Connection...
能否讲清楚些 多谢~
【 在 o0allen0o 的大作中提到: 】
: : 多态吧
: : 【 在 o0allen0o (allen) 的大作中提到: 】
: : : Connection conn = DriverManager.getConnection();//接口声明变量,ok
: ...................
的确返回的类型是connection,这是个接口,是虚的。
但是到了运行的时候,DriverManager.getConnection()返回的是一个实实在在的对象。
同时,它可以是一个接口。
也就是说对象实现了接口,和 对象 is a 接口 没有什么不同。
这里conn名义是接口,实际上conn是对象。
我个人是这么理解的,不知道对不对。
【 在 ericyosho 的大作中提到: 】
: 鸭子是动物,返回的类型是动物,但实际上指向的对象是鸭子,难道不行么?
: --
: 无代码,无真相 =。=
: ...................
你说的情况,是ok
但是这里情况不一样吧 java api上DriverManager.getConnection()的返回类型是Connection,而Connection是一个接口
interface Connection{
....
}
class ConnectionImpl implements Connection {
....
}
public class DriverManager{
public static Connection getConnection(){
return new ConnectionImpl();
}
}
【 在 o0allen0o 的大作中提到: 】
: : 鸭子是动物,返回的类型是动物,但实际上指向的对象是鸭子,难道不行么?
: : --
: : 无代码,无真相 =。=
: ...................
【 在 hotcode 的大作中提到: 】
: interface Connection{
: ....
: }
: ...................
原来有ConnectionImpl类 多谢!
请问你从哪查到这个的呢?
这是他为了说明问题自己创造的吧
【 在 o0allen0o (allen) 的大作中提到: 】
【 在 hotcode 的大作中提到: 】
: interface Connection{
: ....
: }
: ...................
原来有ConnectionImpl类 多谢!
请问你从哪查到这个的呢?
【 在 ppooooll 的大作中提到: 】
: 这是他为了说明问题自己创造的吧
: 【 在 o0allen0o (allen) 的大作中提到: 】
: 【 在 hotcode 的大作中提到: 】
: ...................
没有,刚查看了mysql的java驱动 里面确实有这个类ConnectionImpl
估计jdbc api 里面 Connection 这个接口 没有实现
而由mysql的java驱动来实现
不知道是不是这样?