linux_kaige 发表于 2012-12-05 17:26

java interface的作用

大家好,学java过程中有个疑问,就是interface的作用,资料上讲:

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

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

求指点迷津!

wlmouse 发表于 2012-12-06 11:35

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

linux_kaige 发表于 2012-12-11 10:41

回复 2# wlmouse
谢谢!


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

方兆国 发表于 2013-01-13 15:40

C++中的虚基类和java的接口差不多

hbsycw 发表于 2013-01-15 16:56

要针对接口编程,而不是针对实现编程。这是为了代码的灵活,方便扩展。比如:网站的支付接口,具体有支付宝、财付通、快钱等很多家第三方支付公司渠道实现,你的网站要使用第三方支付功能,就存在这个问题,你不可能绑在哪一家上,这样功能扩展的时候很麻烦,这时,你就可以定义一个抽象的支付接口,具体实现,把选择的哪个注入实例化就可以了。

linux_kaige 发表于 2013-01-16 17:22

回复 5# hbsycw


   多谢!:wink:

he-frank 发表于 2013-01-17 16:41

这就是面向对象的好处,面向对象不会让程序性能更好,却是能让代码更整洁,更适合人来阅读

hbsycw 发表于 2013-01-17 17:09

本帖最后由 hbsycw 于 2013-01-17 17:10 编辑

he-frank 发表于 2013-01-17 16:41 static/image/common/back.gif
这就是面向对象的好处,面向对象不会让程序性能更好,却是能让代码更整洁,更适合人来阅读

正解~:em02:


   

owenhappy 发表于 2013-02-03 17:44

你自己做个或者学习个spring rmi的例子吧, 会豁然开朗的啊
页: [1]
查看完整版本: java interface的作用