黑马程序员技术交流社区

标题: 多继承 [打印本页]

作者: 何武    时间: 2013-7-27 17:59
标题: 多继承
本帖最后由 杜光 于 2013-7-28 09:19 编辑

java中无法多继承的原因是因为方法名相同而产生的不确定性,如果程序中不会出现方法名相同的情况是否能够多继承?
作者: breaveheart    时间: 2013-7-27 18:26
如果想用extends的话,那只能逐个继承,不如说
class A{}
class B extends A{}
如果C类既想继承A也想继承B,那么就
class C extends B{}
所以说利用接口implements的方法会更好。
作者: toShareBeauty    时间: 2013-7-27 19:22
本帖最后由 toShareBeauty 于 2013-7-27 19:27 编辑

就算木有重名,当然也不可以多继承
如果说方法的不安全性是不支持多继承的一方面,那么更重要的一方面就是 java 把继承这种机制分为主次,主就是 extends ,次就是 implements,意思是说类必须有且只有一个主的分类,用 extends。


我们看待事物的时候是可以从多个角度去看待的,那么可能就有  多个  类的纵向关系,但是 java 里面给这多纵向关系分了主次,主用 extends ,次用 implements ,这才是 java 单继承的精髓。你可以在生活中好好体验一下。


作者: の放下执著    时间: 2013-7-27 19:33
java中不支持多继承,只支持单继承;java用接口interface代替了C++中的多继承机制。这样就避免了C++多继承机制带来的麻烦。
如:在C++中  
class A{};  
class  B :public A {};
class C :public  B{};
class D:public B,public C{};
D d = new D();
那么在内存中该分配一份class A还是两份呢,还有这个A到底是从B继承来还是C呢,这就很麻烦了。
java认为多继承太麻烦了,所以就用接口代替了C++中繁琐的多继承。
作者: 王松松    时间: 2013-7-27 20:06
明明都说了java不支持多extends,你偏偏要这样做,这不是钻牛角尖么,多继承是用implements实现。{:soso_e141:}
作者: 董凯    时间: 2013-7-27 20:31
用接口可以多继承!普通的类与类没法多继承!
作者: 薛鹏鹏    时间: 2013-7-27 22:21
不出现同名也不可以。
java中不支持多继承,支持多层继承,比如A继承B,B继承C。
java中用接口interface代替了C++中的多继承机制。
作者: 诸隆隆    时间: 2013-7-27 22:51
....你把多继承的意思弄反了吧。如果方法名不同,那就是两个方法了,两个方法继承同一个父类是可以的,但和多继承没关系。java中多继承是绝对没有的,无论是你第一句写的语法限制,还是多继承本身风险。但这些真无关紧要,因为多继承的好处可以通过实现多个接口来达到,何乐而不为呢
作者: 梁泽冕    时间: 2013-7-27 23:52
java 不能多继承。只能单继承,但是可实现多接口。 单继承子类具备其父类的性质, 这种关系是单一性的。比如我是甲的儿子,不能同时还是乙的儿子。 单继承易读 易维护 语义清晰 逻辑清楚 。
而接口则不同 接口只定义一些公共行为 比如有两个接口 一个定义了跑这个动作 另一个定义了走这个动作 人这个类就可以同时实现这两个接口所定义的行为 。
作者: 續寫↖完羙↘    时间: 2013-7-28 10:23
java语言中:java只支持单继承,不支持多继承。因为多继承容易带来安全隐患。当多个父类中定义了相同功能,但功能内容不同时,子类不知道继承哪一个。但是java保留了这种机制,并用另一种体现形式来表示,叫做多实现。




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