“全栈2019”Java第八十六章:嵌套接口可以多继承吗?

158 阅读6分钟
原文链接: www.toutiao.com

难度

初级

学习时间

30分钟

适合人群

零基础

开发语言

Java

开发环境

  • JDK v11
  • IntelliJ IDEA v2018.3

提示

本教学属于系列教学,内容具有连贯性,本章使用到的内容之前教学中都有详细讲解。

1.接口嵌套接口

前面我们学习过类和接口中嵌套接口,外部类和内部类实现接口中的嵌套接口。简单来回顾一下嵌套接口。

演示:

类中嵌套接口。

代码:

“全栈2019”Java第八十六章:嵌套接口可以多继承吗?

演示:

接口中嵌套接口。

代码:

“全栈2019”Java第八十六章:嵌套接口可以多继承吗?

类中嵌套接口默认是static的。

接口中嵌套接口默认是public static的。

2.类中嵌套接口的多继承

此小节主要演示类中嵌套接口的多继承代码如何编写,具体实现在第4小节。

既然是接口的多继承,那么继承的接口有可能来自嵌套接口也有可能来自外部,所以又得有三种情况:

第一种是全部来自嵌套接口;

第二种是全部来自外部接口;

第三种是一部分来自嵌套接口和一部分来自外部接口。

对于以上三种多继承情况,我们只做其中的一种情况演示。因为三种多继承情况中除了接口定义的位置不同,其他没有什么不同。

演示:

请定义一个外部类Outer,在外部类Outer中定义三个嵌套接口IInner1、IInner2、IInner3,其中嵌套接口IInner1、IInner2、IInner3中分别有抽象方法sayAbstract1()、sayAbstract2()、sayAbstract3()。

请观察程序代码。

代码:

“全栈2019”Java第八十六章:嵌套接口可以多继承吗?

3.接口中嵌套接口的多继承

此小节主要演示接口中嵌套接口的多继承代码如何编写,具体实现在第5小节。

和第2小节中一样,我们此次只演示接口中嵌套接口情况。

演示:

请定义一个外部接口IOuter,在外部接口IOuter中定义三个嵌套接口IInner1、IInner2、IInner3,其中嵌套接口IInner1、IInner2、IInner3中分别有抽象方法sayAbstract1()、sayAbstract2()、sayAbstract3()。

请观察程序代码。

代码:

“全栈2019”Java第八十六章:嵌套接口可以多继承吗?

4.实现类中多继承嵌套接口

接下来,我们就要去实现类中多继承嵌套接口。

在实现嵌套接口时,又出现了两种情况:

第一种是外部类实现嵌套接口;

第二种是内部类实现嵌套接口。

鉴于两种情况没有很大的区别,所以我们选择内部类去实现嵌套接口。

演示:

请定义一个外部类Outer,在外部类Outer中定义三个嵌套接口IInner1、IInner2、IInner3,其中嵌套接口IInner1、IInner2、IInner3中分别有抽象方法sayAbstract1()、sayAbstract2()、sayAbstract3()。

请在外部类Outer中定义一个内部类Inner并实现Outer类中的嵌套接口IInner1、IInner2、IInner3。在Main类main()方法中创建内部类Inner对象并调用其实现的方法。

请观察程序运行结果。

代码:

Outer类:

“全栈2019”Java第八十六章:嵌套接口可以多继承吗?

Main类:

“全栈2019”Java第八十六章:嵌套接口可以多继承吗?

结果:

“全栈2019”Java第八十六章:嵌套接口可以多继承吗?

从运行结果来看,程序没有问题,结果也是准确无误的。

程序调用简单分析:

“全栈2019”Java第八十六章:嵌套接口可以多继承吗?

分别调用的是内部类里面的实现方法。这里只是告诉大家类中可以编写很多接口,而且这些接口还可以多继承,至于去实现它们,就和普通类去实现普通接口一样,没有什么区别。

那么类中编写接口还有存在的意义吗?应用场景在哪?

不急,下一章开始会有两章的内容来讲解类中嵌套接口的应用和接口中嵌套接口的应用。

5.实现接口中多继承嵌套接口

接下来,我们就要去实现接口中多继承嵌套接口。

演示:

请定义一个外部接口IOuter,在外部接口IOuter中定义三个嵌套接口IInner1、IInner2、IInner3,其中嵌套接口IInner1、IInner2、IInner3中分别有抽象方法sayAbstract1()、sayAbstract2()、sayAbstract3()。

请定义一个外部类OuterService并实现外部接口IOuter中的嵌套接口IInner1、IInner2、IInner3。在Main类main()方法中创建外部类OuterService对象并调用其实现的方法。

请观察程序运行结果。

代码:

IOuter接口:

“全栈2019”Java第八十六章:嵌套接口可以多继承吗?

OuterService类:

“全栈2019”Java第八十六章:嵌套接口可以多继承吗?

Main类:

“全栈2019”Java第八十六章:嵌套接口可以多继承吗?

结果:

“全栈2019”Java第八十六章:嵌套接口可以多继承吗?

从运行结果来看,程序没有问题,而且结果正确。

简单分析一下程序执行过程,首先是看看实现类OuterService实现了嵌套接口Inner1:

“全栈2019”Java第八十六章:嵌套接口可以多继承吗?

因为嵌套接口是多继承接口,所以它里面的所有抽象方法都需要被实现。

然后开始执行我们的main()方法:

“全栈2019”Java第八十六章:嵌套接口可以多继承吗?

执行对应的方法,其执行结果如下:

“全栈2019”Java第八十六章:嵌套接口可以多继承吗?

这里只是告诉大家接口中可以编写很多接口,而且这些接口还可以多继承,至于去实现它们,我们还是需要借助普通类去实现它们,实现方式和普通类实现普通接口一样,没有什么区别。

那么接口中编写接口还有存在的意义吗?应用场景在哪?

不急,下一章开始会有两章的内容来讲解类中嵌套接口的应用和接口中嵌套接口的应用。

总结

  • 嵌套接口可以多继承。
  • 嵌套接口可以定义在类中。默认是static的。
  • 嵌套接口可以定义在接口中。默认是public static的。
  • 嵌套接口可以继承外部接口。
  • 嵌套接口可以继承嵌套接口。
  • 外部类可以实现多继承嵌套接口。
  • 内部类可以实现多继承嵌套接口。

至此,Java中多继承嵌套接口相关内容讲解先告一段落,更多内容请持续关注。

附:接口学习资料

“全栈2019”Java第六十章:如何定义接口

“全栈2019”Java第六十一章:如何实现接口?

“全栈2019”Java第六十二章:接口与常量详解

“全栈2019”Java第六十三章:接口与抽象方法详解

“全栈2019”Java第六十四章:接口与静态方法详解

“全栈2019”Java第六十五章:接口与默认方法详解

“全栈2019”Java第六十六章:抽象类与接口详细对比

答疑

如果大家有问题或想了解更多前沿技术,请在下方留言或评论,我会为大家解答。

上一章

“全栈2019”Java第八十五章:实现接口中的嵌套接口

下一章

“全栈2019”Java第八十七章:类中嵌套接口的应用场景

学习小组

加入同步学习小组,共同交流与进步。

  • 方式一:关注头条号Gorhaf,私信“Java学习小组”。
  • 方式二:关注公众号Gorhaf,回复“Java学习小组”。

全栈工程师学习计划

关注我们,加入“全栈工程师学习计划”。

“全栈2019”Java第八十六章:嵌套接口可以多继承吗?

版权声明

原创不易,未经允许不得转载!