黑马程序员技术交流社区

标题: 关于实现的问题 [打印本页]

作者: 唐巍    时间: 2012-3-1 03:52
标题: 关于实现的问题
本帖最后由 唐巍 于 2012-3-1 03:52 编辑

  实现(implements)与继承(extends)有什么区别?哪一种耦合性强?
作者: 刘刚洪    时间: 2012-3-1 07:56
区别嘛,应该从它们各处的特点来讲,
继承:继承也就是类与类之间的一种关系, java里不能多继承,因为当父类与子类有相同的方法时,虚拟机无法判别。
实现:java可以多实现,实现也就是接口(interface)与类之间的一种关系,多实现就没有以上的问题,因为父类方法必须在子类复写实现。
至于耦合性,我了解也不多,学java的时间不长。
作者: 沈样    时间: 2012-3-1 08:40
实现(implements)与继承(extends),在java中只能继承一个父类,implements可以拥有很多,至于用那一个这个还是要看你的程序设计,我觉得这个还是要从实际环境中去理解
继承就好像,你一出身就拥有的属性,实现实是后天的通过学习拥有的一种属性
作者: 张开开    时间: 2012-3-1 09:13
extends 继承只能继承一个类,而 不能继承多了,在java里不存在多继承,而在c++中则有多继承。所以implements就弥补了这个不足,可以通过多实现在完成相关操作,但是两个概念又是有区别的。接口提供了关联以及方法调用上的可插入性,软件系统的规模越大,生命周期越长,接口使得软件系统的灵活性和可扩展性,可插入性方面得到保证。因此在java中更提倡多实现来完成。其耦合性我觉得还是继承更强一些,呵呵,个人理解啦
作者: 王杰    时间: 2012-3-1 19:50
接口是提高了类的功能的扩展性这是非常主要的。而继承提高了代码的复用性。
关于偶合性的关系是:继承的耦合性高于接口!
作者: 冯兵兵    时间: 2012-3-1 20:58
继承指的是类与类之间的关系,java只支持单继承,一个类只能有一个父类。但可以实现多个接口。
接口是为了扩展程序的功能,允许一个类同时实现多个接口。
内聚:一个模块内各个元素彼此结合的紧密程度。
耦合:一个软件结构内不同模块之间互连程度的度量(耦合性也叫块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。
继承的内聚性高于接口,接口的耦合性高于继承。
作者: 段玉超    时间: 2012-3-1 21:06
具体问题具体分析, 主要看时机情况而定。继承是严格的is-a关系,继承需要符合一个原则,就是 子类必须可以完全替代父类。接口主要面向的是功能。继承的保留字是 extents ,就是扩展的意思,子类是父类的专门化。接口也叫契约,实现接口,以为这你要提供接口规定的服务。跟接口类似的还有抽象类,但是抽象类可以提供一部分实现,而接口则只能规定或者要求其子类实现某些功能。关于其耦合性的比较个人觉得不恰当,耦合并不是语言特性,而是代码带来的问题。像设计模式中大量的使用了继承,要想降低耦合性考验的是对面向对象的理解,对代码的编写和组织能力而且对业务的理解也至关重要,不应该单纯的去比较继承跟接口的耦合性。
作者: 李会启    时间: 2012-3-1 21:41
1. 在类的声明中,通过关键字extends来创建一个类的子类。一个类通过关键字implements声明自己使用一个或者多个接口。
extends 是继承某个类, 继承之后可以使用父类的方法, 也可以重写父类的方法; implements 是实现多个接口, 接口的方法一般为空的, 必须重写才能使用
2.extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,JAVA中不支持多重继承,但是可以用接口 来实现,这样就要用到implements,继承只能继承一个类,但implements可以实现多个接口,用逗号分开就行了

作者: 许圣建    时间: 2012-3-2 02:26
我觉得应该比较的是同一个父类的子类之间的耦合性,和实现了同一个接口的子类之间的耦合性;而不是比较子类与父类,子类与接口的耦合性。
个人观点,只能视具体情况而定,工具是为了解决问题遍历的,不管性能如何,首先要弄出来,才能求性能,楼主貌似都搞到代码重构的层次了。。




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