A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 唐巍 黑马帝   /  2012-3-1 03:52  /  2177 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 唐巍 于 2012-3-1 03:52 编辑

  实现(implements)与继承(extends)有什么区别?哪一种耦合性强?

8 个回复

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