黑马程序员技术交流社区

标题: 如何更好地理解接口 [打印本页]

作者: 珠宝    时间: 2015-5-15 00:49
标题: 如何更好地理解接口
接口是暴露的规则如何理解,它是如何实现了功能的扩展?广义的接口和Java中的接口一样吗?


作者: 冷月霜飞    时间: 2015-5-15 06:16
这个问题我分三部分来回答你:
一、接口的出现,完成了解耦,接口是暴露的规则,这个规则有两个关联方,一方使用这个规则,一方面实现了这个规则,就像笔记本电脑使用了USB的规则,而一些外部设备则实现了这些规则,所以他们之间就有了耦合性!笔记本就有了扩展功能,比如拥有了外设鼠标或者摄像头的功能等等
我们都知道java中是不能直接进行多继承的,这样会有不确定性发生,但是事物功能的扩展可以通过接口进行多实现,所以接口的出现避免了单继承的局限性,
二、要弄明白继承和实现的区别;父类中定义的是事物的基本功能,你也可以理解为父类和子类之间是 is a(是) 的关系,即子类是父类中的一种,是从属关系,子类肯定具备父类中的基本属性,在此基础上子类可以有自己的特殊的属性和功能,
而接口中定义的是事物的扩展功能,你可以理解为 like a(像) 的关系,而且,接口中定义的都是抽象的方法,接口是没有方法体的,所以接口不会像多继承那也样出现不确定性,她是可以实现多实现的,即一个类可以实现多个接口,从而具备多个接口中的扩展功能,
三、我的理解是广义的接口和java中的接口的思想史相通的
希望以上回复能帮到你,祝顺利!
作者: _hy    时间: 2015-5-15 08:49
这个问题我分三部分来回答你:
一、接口的出现,完成了解耦,接口是暴露的规则,这个规则有两个关联方,一方使用这个规则,一方面实现了这个规则,就像笔记本电脑使用了USB的规则,而一些外部设备则实现了这些规则,所以他们之间就有了耦合性!笔记本就有了扩展功能,比如拥有了外设鼠标或者摄像头的功能等等
我们都知道java中是不能直接进行多继承的,这样会有不确定性发生,但是事物功能的扩展可以通过接口进行多实现,所以接口的出现避免了单继承的局限性,
二、要弄明白继承和实现的区别;父类中定义的是事物的基本功能,你也可以理解为父类和子类之间是 is a(是) 的关系,即子类是父类中的一种,是从属关系,子类肯定具备父类中的基本属性,在此基础上子类可以有自己的特殊的属性和功能,
而接口中定义的是事物的扩展功能,你可以理解为 like a(像) 的关系,而且,接口中定义的都是抽象的方法,接口是没有方法体的,所以接口不会像多继承那也样出现不确定性,她是可以实现多实现的,即一个类可以实现多个接口,从而具备多个接口中的扩展功能,
三、我的理解是广义的接口和java中的接口的思想史相通的
希望以上回复能帮到你,祝顺利!

好,学习了。
作者: 宥美    时间: 2015-5-15 09:10
不错的问题  学习了
作者: 李超然    时间: 2015-5-15 10:47
本帖最后由 李超然 于 2015-5-15 10:48 编辑

          java不允许类的多继承,这其实对于类的使用来说并不方便,因为某个类只继承一个类中的属性和方法往往并不能满足需要,而如果允许类的多继承的话又有可能会继承了很多用不到的属性和方法,造成代码冗余。(这算是对C++的改进?C++是可以多继承的。)这种情况下,java就有了接口,既能够满足实际使用,又尽可能的避免了代码冗余。        接口中一般只定义一个概念性的方法,并没有方法体。所谓的暴露,我认为其一就是把这个概念暴露,让使用者知道可以实现哪类方法,其二就是使用者可以自己来实现方法。
         对于接口是如何实现了功能扩展的,更准确的说应该是接口是如何实现了类的功能扩展的。一个类可以继承多个接口,多继承是接口帮助类实现功能扩展的途径。关于广义接口和java接口,就如一楼说的,思想上是一脉相承的。

作者: 郭.威    时间: 2015-5-15 14:29
java不允许多继承,但是可以多实现,接口就相当于一个新的功能,如果一个东西需要更新,实现接口这个功能就OK,你可以这么理解
作者: 刘冬    时间: 2015-5-15 18:06
看看设计模式就明白了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2