Java基础——Java"多继承"的三种实现方式

Java语言本身只支持单继承(每个类只能有一个父类),但单继承的局限性很大,因此,可以通过以下的方式实现"多继承"。

多层继承
内部类
接口

1、多层继承

  通过继承的层叠实现多继承,但多层继承一般不要超过3层,代码比较冗余。

 class A{public void getA(){System.out.println("This is A");}}class B extends A{public void getB(){System.out.println("This is B");}}class C extends B{public void getC(){System.out.println("This is C");}}public class MultipleInherit {public static void main(String[] args) {// 此时的C通过继承B,也继承了A(B继承着A),从而实现了"多继承"(C继承了A与B)C c = new C();c.getA();c.getB();c.getC();}}

  输出如下:

2、内部类

  使用成员内部类也可实现"多继承"

 class D{public void getD(){System.out.println("This is D");}}class E{public void getE(){System.out.println("This is E");}}class F{class F1 extends D{public void getDAndF1(){System.out.println("This is F1");getD();}}class F2 extends E{public void getEAndF2(){System.out.println("This is F2");getE();}}public void fun(){// 在外部类中的方法中,调用内部类的方法与属性(内部类对外部类外部并不可见)// 内部类只在外部类中被调用,对外部类的外部不可见,这种设计更能体现封装性new F1().getDAndF1();new F2().getEAndF2();}}public class MultipleInherit2 {public static void main(String[] args) {F f = new F();f.fun();}}

  输出如下:

3、接口

  与前面两种方式(尤其是内部类)相比,接口是最能体现"多继承"的方式,可以通过实现接口的多继承性(接口可以使用extends继承多个父接口)来实现"多继承",在即可以使用内部类又可以使用接口时,优先选择使用接口。

 interface IA{void funA();}interface IB{void funB();}// 使用接口多继承实现"多继承"interface IC extends IA,IB{void funC();}// 实现接口IC的同时需要实现接口IA,IBclass CImpl implements IC{@Overridepublic void funA() {System.out.println("This is A");}@Overridepublic void funB() {System.out.println("This is B");}@Overridepublic void funC() {System.out.println("This is C");}}public class MultipleInherit3 {public static void main(String[] args) {IC c = new CImpl();c.funA();c.funB();c.funC();}}

  输出如下:

Java基础——Java多继承的三种实现方式相关推荐

  1. java源代码实例倒计时_Java倒计时三种实现方式代码实例

    写完js倒计时,突然想用java实现倒计时,写了三种实现方式 一:设置时长的倒计时: 二:设置时间戳的倒计时: 三:使用java.util.Timer类实现的时间戳倒计时 代码如下: package ...

  2. java jndi tomcat_tomcat下jndi的三种配置方式

    Java命名和目录接口(the Java naming and directory interface,JNDI)是一组在Java应用中访问命名和目录服务的API.命名服务将名称和对象联系起来,使得读 ...

  3. Java基础 if if-else if-else if-else 三种示例

        JDK :OpenJDK-11      OS :CentOS 7.6.1810      IDE :Eclipse 2019‑03 typesetting :Markdown   code ...

  4. java知识点 --- 实现多继承的三种方法

    1.多层继承 class A{private int num=10;public int getNum(){return this.num;}public void fun(){System.out. ...

  5. java实现定时任务 schedule_Java定时任务的三种实现方式

    前言 现代的应用程序早已不是以前的那些由简单的增删改查拼凑而成的程序了,高复杂性早已是标配,而任务的定时调度与执行也是对程序的基本要求了. 很多业务需求的实现都离不开定时任务,例如,每月一号,移动将清 ...

  6. java倒计时_Java倒计时三种实现方式代码实例

    写完js倒计时,突然想用java实现倒计时,写了三种实现方式 一:设置时长的倒计时: 二:设置时间戳的倒计时: 三:使用java.util.Timer类实现的时间戳倒计时 代码如下: package ...

  7. Java基础知识 21(Set集合,HashSet集合以及它的三种遍历方式(迭代器,增强for循环,forEach),LinkedHashSet集合,TreeSet集合(自然排序法,比较器排序法))

    Java基础知识 21 Set集合 Set集合:一个不包含重复元素的Collection集合,元素不重复,List集合是允许元素重复的. Set接口的三个字类:HashSet(),LinkedHash ...

  8. 【Java基础系列教程】第三章 Java变量与运算符

    一.Java程序基本结构 1.1 基本结构 Java程序基本结构示例代码: /** * 这里是文档注释 * 这是一个HelloWorld程序 */ public class HelloWorld {p ...

  9. java多线程实现表复制_Java多线程的三种实现方式

    今天简单说一下Java三种多线程实现方式和区别,主要有实现Runnable.Callable和继承Thread三种方式. 实现Runnable的方式 这种方式比较常用,当我们的线程类有继承其他的类的情 ...

最新文章

  1. PM配置详解之二:工厂维护和客户服务中心的主数据
  2. Notepad++写Verilog HDL代码时,在注释语句下出现红色波浪线怎么办?
  3. 排错-Loadrunner录制打不开浏览器解决方法
  4. 在写代码过程中遇到的问题,以及当时的解决方法(如实记录)
  5. 手把手叫你玩转网络编程系列之三 完成端口(Completion Port)详解
  6. Spark SQL External DataSource外部数据源操作流程
  7. ASP.NET程序如何防止被注入(整站通用)
  8. .NET 5(C#) 将控制台程序(Console Application)发布成单个exe文件
  9. Kali-简易的Linux系统Dos网站压力测试(攻击)
  10. HDS VSP/VM高端存储更换电池
  11. MATLAB笔记:打开数据文件的三种方法+读取数据文件的两种方法+保存数据文件的两种方法
  12. 螣龙安科入侵感知:防火墙有哪些缺陷?
  13. lock-step技术
  14. redhat Enterprise Linux Server release 7.2(Maipo) 安装redis-stat
  15. SpringBoot集成Elasticseach
  16. 安mysql一直转圈_在访问数据库时没报错一直转圈,mysql版本不同的连接方式
  17. c语言质变量变,量变和质变的根本区别是( )
  18. 解决ios在微信内置浏览器中video播放的全屏问题
  19. 动态规划解决01背包问题
  20. vue简单的图片相册幻灯片实例

热门文章

  1. LNK1120: 一个无法解析的外部命令
  2. 铣床是什么?怎么分类
  3. 实例比较单精度浮点型,双精度浮点型运算结果精度
  4. 小米前端实习电话面试一面
  5. 【架构】分布式系统及相关技术栈初了解
  6. 机房布线的至高境界,美到窒息
  7. 沪江网校前端架构漫谈
  8. 【Android】Binder的理解
  9. Head First Java资源
  10. 蚂蚁课堂 - springboot入门(非常详细)讲解人:(余胜军)