面试官说:java怎么实现多继承?
答:java不允许,不允许,不允许多继承。

面试官:我就是要实现多继承?
答:好吧,行。

首先要区分一下三个概念:
单继承
多级继承
多继承

1.单继承

java两个类之间可以有继承关系。
在多个类的情况下,一个类作为子类,它的的父类只有一个;同时,一个类作为父类,它的子类有很多个。

2.多级继承

发生在java3个及3个以上的类之间。
a类继承b类,b类继承c类,…
这样成一条长链,a类就可以实现多级继承,可以继承b类、c类、…

3.多继承

多继承在java概念上不允许,但是为了弥补不足,java也有了接口概念,弥补java不能实现多继承的缺陷。
多继承实现的方法有三种:多级继承,实现接口,内部类。
这里不多介绍多级继承和实现一个或多个接口。

  • 内部类的介绍地址:
    内部类介绍:常用类(一)内部类

  • 下面就参考网页的举个例子,已搬到下面:
    @rocling的原创博客:java如何实现多继承案例
    假如有一个打电话类Call,里面实现了一个可以打电话的功能的方法callSomebody(String phoneNum);
    一个发信息类SendMessage,里面实现了一个可以发信息功能的方法sendToSomebody(String phoneNum);
    还有一个手机类Phone,这个手机类想实现打电话和发信息的功能;我们知道可以用继承来获得父类的方法,但是只可以单继承呀,也就是说只可以实现其中一个类里面的方法,这并不满足我们的需求。
    接下来,我们就使用内部类,达到我们所需的目标了。

class Call {public void callSomebody(String phoneNum){System.out.println("我在打电话喔,呼叫的号码是:" + phoneNum);}
}
class SendMessage {public void sendToSomebody(String phoneNum){System.out.println("我在发短信喔,发送给 :" + phoneNum);}
}
public class Phone {private class MyCall extends Call{}private class MySendMessage extends SendMessage{}private MyCall call = new MyCall();private MySendMessage send = new MySendMessage();public void phoneCall(String phoneNum){call.callSomebody(phoneNum);}public void phoneSend(String phoneNum){send.sendToSomebody(phoneNum);}public static void main(String[] args) {Phone phone = new Phone();phone.phoneCall("110");phone.phoneSend("119");}
}

这样就实现了callSomebody(String phoneNum) 和sendToSomebody(String phoneNum)这两个方法的功能呢。

  • 优点:包装了内部类,实现了多继承。
  • 不足:此类为内部类的包装,一般在公司不太适用,不能满足大多数开发需求,毕竟创建的一个类里有多个类。

java关于多继承和单继承相关推荐

  1. JAVA只要掌握内部类,多继承和单继承都不是问题

    本文分享自华为云社区<[JAVA冷知识]JAVA居然支持多继承?让我们用内部类去吧!>,作者:山河已无恙 . 众多周知,对于面向对象语言来讲,JAVA是不支持多继承的,只支持单继承,但是提 ...

  2. php 魔术方法 多继承,day23:单继承多继承菱形继承__init__魔术方法

    原文:https://www.cnblogs.com/libolun/p/13434675.html 单继承 关于继承的一些基本概念 1.什么是子类?什么是父类?如果一个类继承另外一个类,该类叫做子类 ...

  3. Python OOP:继承、单继承、多继承、__mro__、子类重写父类同名属性和方法、子类调用父类同名属性和方法、多层继承、super()、私有(实例)属性和方法、获取修改私有属性值、私有类属性

    一.继承 Python⾯向对象的继承指的是多个类之间的所属关系,即⼦类默认继承⽗类的所有属性和⽅法. 继承作用:继承可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展. 在P ...

  4. java三大特性:封装、继承、多态

    2019独角兽企业重金招聘Python工程师标准>>> 至今记得若干年前,去面试排了半天的队,到我的时候,面试官问我的第一个问题,java三大特性是什么~我支支吾吾的没有答全~0.0 ...

  5. 【Java】 5.6 类的继承

    目录 Java的继承:实现代码复用的手段之一 方法重写(Override,也叫覆盖):两同.两小.一大 super限定 调用父类构造器 Java的继承:实现代码复用的手段之一 一个类与另一个人类的关系 ...

  6. java面向对象(二)之继承

    继承 介绍 继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力.继承即常说的is-a关系.子类继承父类的特征和行为,使得子类具有父类的各种属性和方法.或子类从父类继承 ...

  7. java父类转子类_java中什么是继承,和继承的接口的关系?

    继承的概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父 ...

  8. java的继承实例_java继承(实例讲解一)

    Java继承(Java inheritance) Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类.这种技术使 ...

  9. 【JAVA SE】第七章 继承和多态

    第七章 继承和多态 文章目录 第七章 继承和多态 一.继承 1.概念 2.继承的特性 2.继承关键字 3.构造器 4.子类重写父类方法的规则 二.多态 1.概念 2.多态的优点 3.多态存在的三个必要 ...

最新文章

  1. python获取excel某一列-Python从Excel中读取日期一列的方法
  2. python queue get 方法_Python Queue模块详解
  3. boost::geometry模块自定义多边形示例
  4. Dynamo:亚马逊的高可用键值存储
  5. 使用ActionScript实现滤镜效果
  6. Python中68个内置函数的总结
  7. 标准C程序设计七---72
  8. 自定义----损失函数与优化器
  9. python3+Neo4j+flask,汽车行业知识图谱项目实战
  10. RouterOS安装以及搭建DHCP PPPoE PPTP L2TP服务
  11. 使用jQuery来创建平滑的页面滚动
  12. Docker与容器化-04-Docker私有仓库与镜像迁移备份
  13. 安防的未来五年 如何把握机遇深耕市场?
  14. Weka下载安装详解
  15. Js封装组件 + Slots插槽
  16. 电脑软件测试英雄联盟,怎么测试电脑能不能玩英雄联盟
  17. windows linux 共存,Windows与Linux共存
  18. FreeIPA FreeRadius FreeOTP 实现双因素认证登录
  19. Android 实现拍照功能,并将图片保存到本地存储
  20. Windows10下QT6(C++)+OpenCV4环境配置及安装

热门文章

  1. 国内几大网络安全公司介绍
  2. 旅行大数据 -- 全球24个时区国家在同一天的生活
  3. 互联网巨头加码云计算,出现了这四个微妙的现象
  4. Thymeleaf模板引擎基本语法
  5. ADAS智能驾驶辅助系统Advanced Driver Assistance System是什么?
  6. 科研工具之文献检索软件/数据库
  7. 如何通过刷百度指数来提高网站的权重
  8. 老闪创业那些事儿(32)——上班打卡吗?
  9. tomcat日志访问阀
  10. Linux 用户认证(crypt方式)