如何处理菱形问题?
“菱形问题”是一种由于多重继承引起的歧义性问题。对于像c++这类允许状态多重继承的语言来说是一个严重的问题。然而在java中只能在接口上而不允许类的多重继承,因此不会包含状态。
考虑下面的情况:
interface A {
default void m() { ... }
}
interface B extends A {}
interface C extends A {}
class D implements B, C {}
上一节给出的缺省方法选择规则为这种情况及其变化提供了一个直观的解释。
在初始情况下(以上代码),D继承的方法m的实现没有歧义性,其由A定义,没有其他可能性。如果情况改变,B现在也声明了m的缺省实现,那么D继承的m的实现遵循“最具体实现”原则。但是,如果B和C都提供缺省实现,那么它们将发生冲突,且D必须提供一个覆盖声明,可能使用语法X.super.m(...)来显式选择继承其一。所有这三种情况正如先前的解释都被方法解析规则所清楚地涵盖。
缺省方法是虚拟的,就像Java中的所有方法。这有时会导致意想不到的结果。给定声明:
interface A {
default void m() { System.out.println("hello from A"); }
}
interface B extends A {
default void m() { System.out.println("hello from B"); }
}
interface C extends A {}
class D implements B, C {}
代码
C c = new D();
c.m();
将打印 hellow from B。C的静态类型并不重要;关键是它是D的实例,其m的最具体的版本继承自B。
原文链接:http://www.lambdafaq.org/what-about-the-diamond-problem/
分享到:
相关推荐
从关联理论看翻译中文化缺省问题---英语论文精修.docx
西门子如何在SCALANCE X414-3E上配置缺省路由?pdf,西门子如何在SCALANCE X414-3E上配置缺省路由?
自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统管理任务的处理和Web编程,Python已经成为最受欢迎的程序设计语言之一。 Python教学简单易懂,零基础小白也可以学会,只要你有耐心学习从入门到...
2.如何关闭缺省工具栏?(Visual C++编程 源代码)2.如何关闭缺省工具栏?(Visual C++编程 源代码)2.如何关闭缺省工具栏?(Visual C++编程 源代码)2.如何关闭缺省工具栏?(Visual C++编程 源代码)2.如何关闭...
4、则可以根据传入的参数【渠道、类型、业务场景】等自定义处理,则不影响主流程,区别于方法前置后置处理,可以讲特性扩展点放到任意代码的地方。 AbstractBizExtPoint目前支持下面几个参数: - bizExtPointCode...
21.如何关闭缺省状态栏?(Visual C++编程 源代码)21.如何关闭缺省状态栏?(Visual C++编程 源代码)21.如何关闭缺省状态栏?(Visual C++编程 源代码)21.如何关闭缺省状态栏?(Visual C++编程 源代码)21.如何...
Stata数据分析过程中,首先需要对数据进行清洗。数据集的缺省项会导致数据分析严重失真。数据清理过程中,有必要对缺省值进行查漏补缺或删除处理。这里介绍三种最简单的处理方法。
bashre---为shell用户设置系统范围的缺省设置。(缺省情况下,它的设置shell提示符包含当前用户名,主机名,当前目录和其他值) cdrecord.conf---包含了刻录cd所用的缺省值 crontab---设置cron环境变量和运行自动...
自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统管理任务的处理和Web编程,Python已经成为最受欢迎的程序设计语言之一。 Python教学简单易懂,零基础小白也可以学会,只要你有耐心学习从入门到...
行业资料-建筑装置-建立缺省数据无线承载的方法和装置.zip
行业分类-设备装置-一种缺省权限配置的方法和装置.zip
-如何自定义Javascript脚本和C#处理函数来响应键盘事件。 -为Tree增加AutoLeafIdentification属性。 -增加示例(tree_auto_leaf_identification.aspx)(feedback:wdrabbit)。 +2009-11-17 v2.1.4 -修正...
行业分类-设备装置-检测缺省网关状态的方法及系统
VC、UITableView 常用缺省页、loading页
行业分类-设备装置-一种可缺省关键词的挖掘方法、数据搜索方法及设备
行业文档-设计装置-缺省承载上策略计费控制规则移除方法和装置.zip
python数据分析与可视化-25-缺省参数.ev4.rar
行业文档-设计装置-一种广告位缺省广告的投放方法.zip
52. 加密的300PLC MMC处理方法 13 53. 以314C为例计数时如何清计数器值? 14 54. CP342-5能否用于PROFIBUS FMS协议通讯? 14 55. 为什么CP342-5 FO无法建立通讯?如何配置? 14 56. CP342-5的3中工作方式有什么区别...