看到你关于getConnection方法的回复(http://zhidao.baidu.com/question/200985767.html)

看到你的解答,有了很大的收获,但是我有一点疑问,在JDK1.6文档中,对这个方法的声明是:publicstaticConnectiongetConnection(Stri... 看到你的解答,有了很大的收获,但是我有一点疑问,在JDK1.6文档中,对这个方法的声明是:

public static Connection getConnection(String url,String user,String password)throws SQLException

就是明确指出了这个方法的返回值是Connection 借口类型的。

但是我不明白,如果按照你说的,为什么它不使用某个具体的已经实现了Connection借口的类来作为这个方法的返回值?

另外,即使有可能是因为这个方法的返回值有很多种Connection借口的已实现类构成,那么,使用

stmt = conn.createStatement();

这个语句来更新数据库,我感到很惊讶,因为一开始conn被声明为Connection接口类型变量(没有实例化),那么作为一个接口类型的变量,按照“接口中的方法都是未被实现的”说法,这个语句岂不是调用了一个根本没有方法体的方法?

我自己想出的一种可能的解释是:在getConnection时返回了Connection的已实现类(虽然声明的返回值是接口类),在conn调用creatStatement()的时候,系统把conn看做的是这个已实现的类,而非接口类变量。这样说来,已实现的类,必然是覆写了接口的creatStatement方法的,所以这里在getConnection之后调用createStatement,是调用了覆写过的createStatement。

不知道是不是这样解释的?
展开
 我来答
liangxiaogang5
2012-11-10 · TA获得超过262个赞
知道答主
回答量:31
采纳率:0%
帮助的人:40万
展开全部
我想你没有理解java的面向对象特性。
你对类和对象(实例)之间的关系没有搞清楚。类是一个最基本的java数据结构的描述,它只告诉系统你需要什么样的数据结构和什么样的操作,这样的描述被虚拟机存放在一块固有的内存上面,其中包括数据成员的描述,以及方法(函数)在内存中的地址,而不涉及具体的成员值。而接口是一种被特殊化的类,它的描述和类一样也放在一块固有的内存,但是比类占有更小的内存。
对于继承,你可以想象,一个类或接口,它的描述中有一个父类,而这个父类对它来说就是一个存放这个父类描述的内存地址。
对象是一种具有具体值得一种数据结构,它包括类在内存中的索引和具体的值,而这些值可能是静态内存中的值,或者是一个内存地址(这个内存地址指向一个数组或者另外的对象所在的内存)。
conn.createStatement()之所以能返回一个有实体的stmt,是因为conn是一个对象,你在程序中对它的访问是访问的这个对象在内存中的结构,而你的声明并没有指定具体类,因为,这个对象可以找到他的类的描述,而这个类能找到他的父类(或者接口)的描述,而所谓的覆盖就是将父类描述中的方法“索引”修改成了新的一块方法(函数)的地址,你调用的是虽然表面上看起来是接口的方法,而实际上程序执行的是新方法地址的那块程序。

下面说为什么不用具体的实现类,而用接口操作。
这是软件工程中的高移植性,低耦合和高效开发所要求的,JDBC是一套规范,而这个规范的目的在于对于使用它编程的程序员来说,你所要做的工作是使用它而不是实现他,你只需要了解和遵守了它,就可以不需要关心其具体的实现就能完成数据库的操作,更重要的是不需要在代码中出现某一种数据库专用的代码,因为这样在更换数据库的时候,无需对你的代码作任何改动。
说的不是很好,望见谅。
来自:求助得到的回答
harry9090
2012-11-09 · 超过19用户采纳过TA的回答
知道答主
回答量:53
采纳率:0%
帮助的人:40.2万
展开全部
我想弱弱的问问,面向对象中的多态是什么意思?你知道不?
好好的去多看看多态。你能说出面向对象的三大特征?? 封装,继承,多态?还是继承,封装,多态?还是多态,继承,封装?还是别的什么?

这句话是答案:子类对象可以赋值给父类,但是父类不能赋值给子类。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友489295667
2012-11-09 · TA获得超过2367个赞
知道小有建树答主
回答量:1471
采纳率:80%
帮助的人:304万
展开全部
getConnection()返回的是一个Connection实现类的对象只不过,用Connection的引用指向了这个实现类的对象。
这就叫,父类引用指向子类对象.

sun当前只定义了jdbc的接口,实现则是由具体的数据库厂商完成的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Oo海之蓝歌oO
2012-11-09 · 喜欢计算机有关的东东
Oo海之蓝歌oO
采纳数:244 获赞数:876

向TA提问 私信TA
展开全部
返回的已经是实例了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式