黑马程序员技术交流社区

标题: 被人问住了,为何java只支持单继承,确却有可以实现多个接口? [打印本页]

作者: Juice.cy.wang    时间: 2015-11-25 12:13
标题: 被人问住了,为何java只支持单继承,确却有可以实现多个接口?

   我想的原因是

   接口是为了给对象添加属性或者行为的;而继承是指从父类中完全自由的获取实现。
    主要是因为多继承是一种容易混淆,复杂的语言特性。
   其次,java语言是一门务求简单的语言,所以设计之初便摒弃了多继承。
       不知各位还有无补充?
作者: 一江夜雨    时间: 2015-11-25 12:21
1,接口可以继承多个接口。为什么不能实现类的多继承?主要是防止多个类有相同的方法名,然而方法体不一样,子类就比较难选择了。所以java和C#不支持类的多继承 2,允许具有多个接口的一个好处就是,当实现多个接口时,如果两个接口有同样的方法,那么实现一次就可以了。由于接口没有方法体,所以接口可以实现多继承。
作者: Little_jie    时间: 2015-11-25 14:39
学习了,2楼回答的好
作者: yqlbd    时间: 2015-11-25 14:46
要是支持多继承的话,如果两个父类都有同一个方法名,构成了覆盖关系,子类该用哪个?接口实现的话子类必须重写那个方法。
作者: KALF    时间: 2015-11-25 17:03

2楼回答的挺好的
作者: 梦想家Eva    时间: 2015-11-25 18:37
2楼说的很对,在使用的时候,多继承的话,多个父类可能会出现相同的方法,子类在调用该同名方法时时,就不能确定是哪一个了。而接口中只有方法的声明,没有方法体,子类需要重写接口中的方法,调用的就是子类重写的方法,这样的话,就可以一次重写,多次实现了。
作者: Phy_zhang    时间: 2015-11-25 20:02
受益匪浅,谢谢大家
作者: Good_Man    时间: 2015-11-25 20:33
我想,应该是:  接口 是一种回调,即在 触发某种特定动作是,才执行,, 一段代码,可以触发多种动作,所以可以实现多个接口。 不知道有没有帮助到你
作者: 一个人走天下    时间: 2015-11-25 22:48
一个儿子可以有两个爸嘛
作者: 迷茫不堪的年纪    时间: 2015-11-25 23:32
java只支持单继承, 不支持多继承,但是可以多层继承.  接口更多是的像多态 , 哪里需要就在哪里实现
作者: 袁有福123    时间: 2015-11-25 23:48
学习到了 很棒!
作者: HI耀玮    时间: 2015-11-25 23:58
路过,进来看看
作者: wunaihaoye    时间: 2015-11-26 00:08
单继承可以理解成只有一个亲爹,多实现可以理解为有多个干爹。
这样也是为了提高java语言的安全性,同时多实现又弥补了不能多继承这个缺点。
作者: mlxg    时间: 2015-11-26 00:15
赞一个!!!
作者: Juice.cy.wang    时间: 2015-11-26 10:06
一个人走天下 发表于 2015-11-25 22:48
一个儿子可以有两个爸嘛

可以有一个爸和妈呀
作者: Juice.cy.wang    时间: 2015-11-26 10:09
yqlbd 发表于 2015-11-25 14:46
要是支持多继承的话,如果两个父类都有同一个方法名,构成了覆盖关系,子类该用哪个?接口实现的话子类必须 ...

为了避免出现继承同一方法的情况。这一点说的好, 毕竟Java是一门简单的语言。务求不复杂,其实C++是支持多继承的。
作者: 莫盛强    时间: 2015-11-26 10:11
类与类之间低耦合,高内聚。接口是事物的扩展性。
作者: fsociety    时间: 2015-11-26 16:58
继承是is a  的关系实现是like a 的关系

作者: love60477002    时间: 2015-11-26 20:18
学习了 !!!
作者: zqiang    时间: 2015-11-26 20:25
不错,学习了
作者: 一个人走天下    时间: 2015-11-26 20:40
我说的是家主
作者: 水尛丶    时间: 2015-11-26 21:37
飘过,来学习
作者: Weidan    时间: 2015-11-26 21:56
继承是对类的拓展
接口是补充类的功能
作者: 小布丁当    时间: 2015-11-26 22:02
受益匪浅!!!!!
作者: bbaijiajinger    时间: 2015-11-26 23:15
怎么我会的都让你们回答了呢?
我不会的你们也回答了
我只能学习了
作者: anuo    时间: 2015-12-1 10:02
儿子只有一个亲爸,但也可以有多个后爸的可能是吧
作者: eddy1820    时间: 2015-12-1 20:51
2樓解釋的真好,感謝分享
作者: yubail    时间: 2015-12-1 21:06
谢谢分享
作者: xiao15779706    时间: 2015-12-2 08:59
2楼说的很有道理 学习了
作者: 零尘    时间: 2015-12-2 19:08
补充:正因为继承的单一性,难以满足开发的需要,要知道,代码是仿照生活来做的.所以为了弥补继承的不足,有了接口.
作者: yyt199108    时间: 2015-12-3 23:58
学习了,评论讲的很好
作者: TG·小强    时间: 2015-12-4 10:27
表示2楼的回答,很正确。c语言是支持多继承的。java虽然不能多继承,但已经提供了多层继承,以及接口的多继承来解决这类问题。
作者: 啦啦啦啦啦啦啦    时间: 2015-12-4 16:49
菜鸟  没理清
作者: Jerson_ZF    时间: 2015-12-4 20:31
允许实现多接口,恰好弥补了单继承代码的不足
作者: 会走路的二百块    时间: 2015-12-4 21:52
不错,分析的很有道理啊
作者: 袁有福123    时间: 2015-12-4 21:53
学习了 看回复
作者: Rocky_zhang    时间: 2015-12-4 22:12
is a 的关系和like a的关系还是需要好好理解
作者: 214652440    时间: 2015-12-4 22:18
说说我自己的看法和老师的总结
多继承类的具有很大的不确性,也就是类于类之间耦合性会很高,不利于以后的维护
但是接口只是实现某种功能,本身就是不确定(抽象的),必须通过实现了功能,并且主要接口是是为了扩展类的功能而存在的,接口重要的体现是多实现而不是多继承,
当然这只是我自己的理解,




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