黑马程序员技术交流社区

标题: 为什么一个类可以多实现接口,而不能多继承呢? [打印本页]

作者: 千里马    时间: 2014-10-11 23:45
标题: 为什么一个类可以多实现接口,而不能多继承呢?
哪位大神可以解释一下“为什么一个类可以多实现接口,而不能多继承呢?”
感激不尽!

作者: java-01    时间: 2014-10-12 00:01
如果可以多继承的话,两个父类中有相同的函数,但函数主题不同,那么子类如果没有复写父类的方法,在子类调用该方法时,到底是执行哪个父类的方法内,这样就造成了混乱,所以不可以多继承,但是接口中的方法都是抽象的,子类必须复写,所以可以多实现
作者: shileishihai    时间: 2014-10-12 00:05
JAVA基础班上了十天课的来回答一下:一个类可以实现多接口,because接口成员均为常量和抽象方法。即使不同接口存在同名抽象方法,并不会造成方法无法实现的情况。继承:子类继承父类。如果父类中存在同名非抽象方法但不同实现,多继承情况下出现同时继承同名方法不同实现的情况。编译无法通过。
作者: javaAndroid    时间: 2014-10-12 00:13
因为多继承容易带来安全隐患,当多个父类中定义了相同功能但内容功能不同时,子类对象不确定要运行哪一个。
作者: 戏言丶    时间: 2014-10-12 00:36
楼上说的都不错,我就不添乱了
作者: MR.Sun    时间: 2014-10-12 00:41
2#的回答的不错。
作者: yangyujoe    时间: 2014-10-12 02:17
shileishihai 发表于 2014-10-12 00:05
JAVA基础班上了十天课的来回答一下:一个类可以实现多接口,because接口成员均为常量和抽象方法。即使不同 ...

“子类继承父类。如果父类中存在同名非抽象方法但不同实现”中不同实现你的意思是重载吗?
作者: HM2014nuli    时间: 2014-10-12 08:25
因为多继承容易带来安全隐患,当·多个父类定义了相同的功能但功能内容不同时,子类对象不确定要运行哪一个
作者: shileishihai    时间: 2014-10-12 08:36
yangyujoe 发表于 2014-10-12 02:17
“子类继承父类。如果父类中存在同名非抽象方法但不同实现”中不同实现你的意思是重载吗? ...

不是重载,是重写。
作者: 千里马    时间: 2014-10-12 08:53
java-01 发表于 2014-10-12 00:01
如果可以多继承的话,两个父类中有相同的函数,但函数主题不同,那么子类如果没有复写父类的方法,在子类调 ...

解释的很好,领教啦!谢谢
作者: 残羹夜宴丶    时间: 2014-10-13 13:18
嗯,,很给力,上面说得对

作者: 逍遥小seng    时间: 2014-10-13 16:36
怕增加动态绑定的复杂度。当子类覆盖父类的实力方法,或者隐藏父类的成员变量及静态方法时,JAVA虚拟机采用不同的绑定规则。如果还允许一个类有多个直接的父类,那么会使绑定规则变得更加复杂。而接口中只有抽象方法,没有实例变量和静态方法,只有接口的实现类才会实现接口的抽象方法,这样的话,多实现也不会增加动态绑定的复杂度!




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