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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hg3093483 中级黑马   /  2013-3-22 21:10  /  2259 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请问,什么情况下可以实现多继承?谢谢啦

6 个回复

倒序浏览
类只能单继承,不允许多继承,但是可以多层继承,一个类可以实现多个接口。
回复 使用道具 举报
接口和接口可以多继承 类和类只能单继承
回复 使用道具 举报
假如 父亲、孩子
子类继承了父类的静态特征--属性 和动态特征--方法
多继承 就是 一个孩子 多个父亲 不怎么合理吧
java不支持多继承,但使用接口可以弥补这点,使用implements关键字来完成多个接口的继承

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
java  中的类 只有单继承,没有多继承,是因为 多继承 如果两个父类出现同名函数,会冲突。
java 中用多实现 来弥补了单继承, 接口可以多实现, 因为接口没有方法体,多个接口 出现同名函数 也不会冲突,  
子类复写 才会有方法体。
回复 使用道具 举报
类与类之间是继承关系,类与接口直接是实现关系,接口与接口之间是继承关系。
只有接口与接口之间可以多继承。接口也属于一个类
  1. interface A
  2. {
  3.         void methodA();
  4. }
  5. interface B extends A
  6. {
  7.         void methodB();
  8. }
  9. interface C extends B//接口之间的关系,继承关系。接口直接可以实现多继承,如果b没有继承a,那么c可以extends B,A,因为都没有方法体,所以可以实现多继承。普通的类是无法实现多继承的。假如A和B中有不同的方法体,那么C就不能多继承了。
  10. {
  11.         void methodC();
  12. }
  13. class D implements C//这个时候d要是想实现c必须覆盖3个方法,不覆盖无法进行实例化
  14. {
  15.         public void methodA(){}//要覆盖必须加public
  16.         public void methodC(){}
  17.         public void methodB(){}
  18. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
洪建超 + 1

查看全部评分

回复 使用道具 举报
类定义属性和方法 描述某一类事物的抽象
而接口定义的是行为 并不限于任何具体意向

按照逻辑上来说 单继承更明确 一个子类就应该是其父类代表的事物中的某个更具体的类别 不应该即是这种东西又是那种东西
而从实用角度上来说 单继承易读 易维护 语义清晰 逻辑清楚
而接口则不同 接口只定义一些公共行为 比如有两个接口 一个定义了跑这个动作 另一个定义了走这个动作 人这个类就可以同时实现这两个接口所定义的行为
类对接口的implements称作实现 不能叫做继承

当然 接口可以多继承接口 因为接口只定义行为 并不包含类别的含义 不指代具体的某类事物 而且 从语义上来说 接口对接口的继承称之为扩展更为合适

评分

参与人数 1技术分 +1 收起 理由
洪建超 + 1 知道你=这分很久了,给你了

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马