免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4446 | 回复: 8

java interface的作用 [复制链接]

论坛徽章:
0
发表于 2012-12-05 17:26 |显示全部楼层
大家好,学java过程中有个疑问,就是interface的作用,资料上讲:

“interface”(接口)关键字使抽象的概念更深入了一层。我们可将其想象为一个“纯”抽象类。它允许创建者规定一个类的基本形式:方法名、自变量列表以及返回类型,但不规定方法主体。接口也包含了基本数据类型的数据成员,但它们都默认为static和final。接口只提供一种形式,并不提供实施的细节。
接口这样描述自己:“对于实现我的所有类,看起来都应该象我现在这个样子”。因此,采用了一个特定接口的所有代码都知道对于那个接口可能会调用什么方法。这便是接口的全部含义。

我的疑问是:既然定义了接口,却只能定义它的变量、方法名,不能定义方法体;当你引用接口的时候,每个类还要再去定义这个方法(方法名、方法体、变量)。如果我不定义接口,我直接为我用的类定义方法,就可以了嘛。反而我觉得使用接口更麻烦。。。

求指点迷津!

论坛徽章:
0
发表于 2012-12-06 11:35 |显示全部楼层
Java中的接口,是一种接口契约。主要实现的是OO的抽象、封装、多态。你如果理解了面向对象理论,那么对于接口就感到不麻烦了。
如果你不定义接口,那么你开发的代码和其他代码交流的时候,就必须了解你的代码的具体实现类甚至一些内部情况才可以。如果你日后内部进行了重构,重写改名等等,类名变了,那么别的代码也要跟着改,不然连编译都过不去。
而使用了接口、抽象类这样的抽象,则你只需要修改内部的具体实现,而不用调整外部的接口。只要你外部接口契约不变,那么内部你怎么修改也不会影响别的代码。
在Java体系中,对于OO使用了单继承,多接口的模式。接口只约束类的行为,而不约束内部数据结构。避免了多继承容易造成的数据结构关系混乱问题。

论坛徽章:
0
发表于 2012-12-11 10:41 |显示全部楼层
回复 2# wlmouse
谢谢!


    大家还有什么其他深刻的见解么,:wink:

论坛徽章:
19
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-09-18 15:15:15CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:31CU大牛徽章
日期:2013-05-20 10:46:25CU大牛徽章
日期:2013-05-20 10:46:18CU大牛徽章
日期:2013-04-17 11:19:51CU大牛徽章
日期:2013-04-17 11:19:42CU大牛徽章
日期:2013-04-17 11:19:37CU大牛徽章
日期:2013-04-17 11:19:32CU大牛徽章
日期:2013-04-17 11:19:28
发表于 2013-01-13 15:40 |显示全部楼层
C++中的虚基类和java的接口差不多

论坛徽章:
4
CU十二周年纪念徽章
日期:2013-10-24 15:41:34摩羯座
日期:2013-12-24 13:05:332015亚冠之西悉尼流浪者
日期:2015-10-09 16:03:47fulanqi
日期:2016-06-17 17:54:25
发表于 2013-01-15 16:56 |显示全部楼层
要针对接口编程,而不是针对实现编程。这是为了代码的灵活,方便扩展。比如:网站的支付接口,具体有支付宝、财付通、快钱等很多家第三方支付公司渠道实现,你的网站要使用第三方支付功能,就存在这个问题,你不可能绑在哪一家上,这样功能扩展的时候很麻烦,这时,你就可以定义一个抽象的支付接口,具体实现,把选择的哪个注入实例化就可以了。

论坛徽章:
0
发表于 2013-01-16 17:22 |显示全部楼层
回复 5# hbsycw


   多谢!:wink:

论坛徽章:
0
发表于 2013-01-17 16:41 |显示全部楼层
这就是面向对象的好处,面向对象不会让程序性能更好,却是能让代码更整洁,更适合人来阅读

论坛徽章:
4
CU十二周年纪念徽章
日期:2013-10-24 15:41:34摩羯座
日期:2013-12-24 13:05:332015亚冠之西悉尼流浪者
日期:2015-10-09 16:03:47fulanqi
日期:2016-06-17 17:54:25
发表于 2013-01-17 17:09 |显示全部楼层
本帖最后由 hbsycw 于 2013-01-17 17:10 编辑
he-frank 发表于 2013-01-17 16:41
这就是面向对象的好处,面向对象不会让程序性能更好,却是能让代码更整洁,更适合人来阅读


正解~


   

论坛徽章:
0
发表于 2013-02-03 17:44 |显示全部楼层
你自己做个或者学习个spring rmi的例子吧, 会豁然开朗的啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会

【架构革新 高效可控】2020年12月21日-23日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP