Java接口default方法思考钻石问题
在多种编程语言中,都会有父类子类的继承关系,但是多继承会存在如下的钻石问题。
来看看钻石:
假如A有一个接口,B,C都有自己的实现,那么继承B和C的D,D的实例赋值给A的引用调用这个接口该返回什么?
由于这种情况下类继承图的形状,它被称为“钻石问题”。在这种情况下,A类位于顶部,B和C分别位于其下方,D将两者连接在一起形成菱形。
对于Java类不支持多继承,所以不存在这样的问题,至于C++,这么写的时候好像是不能通过编译的。
但是在Java8之后,接口中引入了default和static方法,接口是支持多继承的,所以可能就会存在这样的问题,编译执行不报错,但结果不是很好理解。比如下面的示例,你觉得执行的是哪一个m方法呢?
当然按照菱形的我可以写个这样的
在每一个接口里面都有 default void show()方法,那么下面的将会输出什么?为什么是它?
参考:
https://www.quora.com/What-is-the-diamond-problem-in-programming
https://en.wikipedia.org/wiki/Multiple_inheritance
Java接口default方法思考钻石问题相关推荐
- Java 接口作为方法参数
一'Java 接口作为方法参数好处: 1 可以很方便封装起来,供调用者使用: 2 参数为接口类型可以实现代码解耦: 3 对调用者而言, 无需关心内部构造逻辑 , 只要实现调用相关方法 实现自己的下部逻 ...
- java函数式编程之接口Default方法五
2019独角兽企业重金招聘Python工程师标准>>> 之前看一段java8的代码,发现接口都可以实现方法了,当然在老的教程里面是会告诉我们接口只是定义了方法的,为什么Java8要这 ...
- [转载] java接口中方法的默认访问修饰符为public
参考链接: Java接口方法 如果一个接口Cup有个方法use(),有个类SmallCup实现接口Cup,则在类SmallCup中正确的是? ( ) A.void use() { -} B.prot ...
- java——接口作为方法的参数和返回值
接口作为方法的参数和返回值 package cn.itcast.day11.demo07;import java.util.ArrayList; import java.util.List; /* j ...
- java接口中方法声明_java – 使用实现中声明的接口中未定义的方法
我有一个由接口定义的类 public interface Test { void testMethod(); } Test test = new TestImpl(); public class Te ...
- java批量删除接口怎么定义_教你在Java接口中定义方法
基本上所有的Java教程都会告诉我们Java接口的方法都是public.abstract类型的,没有方法体的. 但是在JDK8里面,你是可以突破这个界限的哦. 假设我们现在有一个接口:TimeClie ...
- java 二义性_Java接口默认方法带来的问题分析【二义性问题】
本文实例分析了Java接口默认方法带来的问题.分享给大家供大家参考,具体如下: 一 点睛 Java 8中,如果一个类实现两个或多个接口,即"变相"的多继承,但是若其中两个接口都包含 ...
- java 代码 二义性是什么_Java接口默认方法带来的问题分析【二义性问题】
本文实例分析了Java接口默认方法带来的问题.分享给大家供大家参考,具体如下: 一 点睛 Java 8中,如果一个类实现两个或多个接口,即"变相"的多继承,但是若其中两个接口都包含 ...
- Android 接口的default 方法运行时报错AbstractMethodError
[问题描述:接口default方法AbstractMethodError] 记录一个Android项目中遇到的问题,我们通过exclude方式重写了一个依赖,改用本地的实现,其中一个接口的defaul ...
最新文章
- python去除英文字符中的数字和标点符号
- c语言考试长沙理工大学,2013年长沙理工大学C语言考试试卷A.doc
- python turtle 椭圆_【python turtle如何画椭圆】
- SQL性能第1篇:关系优化
- 什么软件可以测试电脑硬件兼容性,Windows 7常用48款软件兼容性测试
- 数据加载中,请稍等......
- 1. rc 目录结构
- memcached全面剖析–5. memcached的应用和兼容程序
- 读书笔记-集体智慧编程
- 闪迪内存卡软件测试,闪迪存储卡怎么样
- gmp计算机分类,GMP附录——计算机化系统汇总.pptx
- Teclast/台电32G SM3267AC H27UDG8M2MTR 量产记录
- 科学研究的方法-笔记01-如何提出科学研究问题
- Windows Server 2008 R2中Windows Server Backup功能之备份、恢复
- 【自动驾驶】【小障碍物感知】
- 一阶IIR数字滤波器的设计
- 高德地图 点击获取坐标
- 解决访问远程共享时发生 请检查名称的拼写. 否则, 网络可能有问题 故障
- Python神笔马良案例集简介
- android的多渠道打包,Android美团多渠道打包Walle集成