java中接口的使用?

drugon 2004-09-10 04:40:56
在java中我们知道接口可以让我们避免类不能多继承的尴尬,但是如果我们继承一个接口,那么我们就要实现其它所有的方法。而在实际当中,我们经常用到java系统中的接口,我们不是继承,只是使用,可是一般上讲,接口是没有方法体的,要我们自己去实现方法体。问题出来了,在java系统中的包java.sql这个包中有很多的接口,如
Array
Blob
CallableStatement
Clob
Connection
DatabaseMetaData
Driver
ParameterMetaData
PreparedStatement
Ref
ResultSet
ResultSetMetaData
Savepoint
SQLData
SQLInput
SQLOutput
Statement
Struct
其中有我们常用的Statement PreparedStatement ResultSet,可是这些接口我们没有实现它其中的各个方法,但我们调用它们的各个方法又不会出任何问题。是不是java系统己经实现了这些接口中的各个方法?但是我们又为什么看不到那些实现的类文件呢?如果java系统自己没有实现这些接口中的方法,那我们调用它时又为什么不会抛出异常呢?接口和它方法实现的文件之间的关系统是不是象C++中的类的头文件和类实现文件之间的关系是一样的?
...全文
623 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
drugon 2004-09-13
  • 打赏
  • 举报
回复
谢谢大家的意见,我把那些驱动程序的jar文件解开看过,就象大家说的一样,其它由各个数据库厂商自己实现了各个接口方法。
redlaputa 2004-09-11
  • 打赏
  • 举报
回复
takecare说得对
weicairong 2004-09-11
  • 打赏
  • 举报
回复
好问题!
alaal 2004-09-11
  • 打赏
  • 举报
回复
weimenren(宁静以致远,淡泊以明志) 用List的例子十分恰当

ArrayList等都是继承了List接口并实现了List中的方法,我觉得这一点在《java2参考大全》中类库的每一章都可以得到体现
1981cxy 2004-09-11
  • 打赏
  • 举报
回复
学习.
看看.
alpha15 2004-09-11
  • 打赏
  • 举报
回复
某些接口中的方法在在某些类中是已经实现了的
newste 2004-09-11
  • 打赏
  • 举报
回复
我是小白来学习的
song3721 2004-09-11
  • 打赏
  • 举报
回复
up
wangdaobang 2004-09-11
  • 打赏
  • 举报
回复
接口只是定义了方法,假如我们以为调用的方法没有被实现的话,我认为是不对的,实现总是有一个或者几个类来实现这个接口,可以被一个类实现,也可以被几个类逐步实现,而且我们可以调用instance.getclass来得知是什么类将这个接口实现的(可能该类是从父类或者更古老的祖先类继承来的)。
weimenren 2004-09-11
  • 打赏
  • 举报
回复

这个不是那些接口实现了方法,接口只是定义方法名,方法参数以及方法返回值,我们使用Statement的时间,你会发现 你使用的 is a Statement,但这个Statement是通过其他的方法创建的,你总不能Statement stmt = new Statement()吧,通过其他方法构造Statement的时间,其实创建的是Statement的子类(子类 is a 父类),所以没有出错

就如 List list = new ArrayList(); 一样,你看见是 List接口,但它调用方法的时间其实调用的是 ArrayList()的方法

因为你很快就可以使用 list.add(Object o) 了, List 接口中定义 add方法,而在 ArrayList中实现
baffling 2004-09-10
  • 打赏
  • 举报
回复
是啊,各厂商提供的jdbc驱动里面应该已经实现了这些方法
treeroot 2004-09-10
  • 打赏
  • 举报
回复
驱动程序不就是实现吗??
你可以打印出来看看事那个类
System.out.println(conn.getClass());
System.out.println(rs.getClass());
.....
sulo_xxr 2004-09-10
  • 打赏
  • 举报
回复
方法其實在其子類中已經實現﹐你所用到的接口會去自動執其了類的方法
執行期型別的識別(向上轉型)
hongshi 2004-09-10
  • 打赏
  • 举报
回复
是啊,还没有 想过这个问题
takecare 2004-09-10
  • 打赏
  • 举报
回复
sun只是制订了JDBC的标准,而数据库厂商会去针对自己的数据库分别实现不同类型的jdbc driver。当使用这些接口前,一般都会Class.forName(driver)来装入Driver,接下来的事情就能预见到了,driver被实例化后或者驻入JVM后,就能够提供实现了。
chan2chen 2004-09-10
  • 打赏
  • 举报
回复
不知道他们是怎么设计这样的?
jiffandu 2004-09-10
  • 打赏
  • 举报
回复
上面说的好像是对的吧,讲不清楚
kobetong 2004-09-10
  • 打赏
  • 举报
回复
同样期待!
alaal 2004-09-10
  • 打赏
  • 举报
回复
调用这些方法的类实际上是继承了拥有该方法的接口,同时实现了这些方法

所以可以正常使用
drugon 2004-09-10
  • 打赏
  • 举报
回复
希望大家多多发表意见,星期一上班后就看情况结帖!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧