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++中的类的头文件和类实现文件之间的关系是一样的?
...全文
704 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
  • 打赏
  • 举报
回复
希望大家多多发表意见,星期一上班后就看情况结帖!
【期刊论文复现】多元宇宙算法求解电力系统多目标优化问题(Matlab实现)内容概要:本文复现了期刊论文提出的多元宇宙算法(Multi-Verse Optimizer, MVO)用于求解电力系统的多目标优化调度问题,采用Matlab进行代码实现。该算法受宇宙黑洞、白洞和虫洞等天文现象启发,通过数学建模模拟多目标搜索过程,具有较强的全局寻优能力和收敛性能。文将其应用于典型的电力系统经济调度场景,如考虑燃料成本、排放量等多个优化目标的微电网或多能源系统调度问题,通过构建合理的数学模型和约束条件,实现对多个冲突目标的协同优化。同时,文章提供了完整的代码框架与仿真结果,便于读者理解和复现。; 适合人群:具备一定Matlab编程基础和优化算法基础知识的研究生、科研人员及从事电力系统优化调度工作的工程师。; 使用场景及目标:①学习和掌握新型智能优化算法——多元宇宙算法的基本原理与实现方法;②将其应用于电力系统经济调度、微电网优化、多目标决策等领域的模型求解;③为科研工作提供可复现的代码参考和技术支持。; 阅读建议:建议读者结合Matlab代码逐行理解算法实现细节,重点关注目标函数建模、约束处理及MVO算法核心迭代逻辑,并尝试在不同测试系统进行参数调优与性能对比,以深入掌握其应用技巧。

62,620

社区成员

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

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