如何解决方法声明的冲突?
因为可以从多个接口继承,相同的缺省方法可以通过不同的路径继承。由于每个继承的默认方法提供了不同的实现,编译器需要一种方式从中做出选择。下面是它的工作模式:
(1)类总是优先。类或父类的声明优先级高于任何缺省的方法声明。
(2)否则,选择具有相同签名的最具体的默认提供接口的该方法。例如,根据以上规则下面的代码输出Hello World from B。
public interface A {
default void hello() { System.out.println("Hello World from A"); }
}
public interface B extends A {
default void hello() { System.out.println("Hello World from B"); }
}
public class C implements B, A {
public static void main(String... args) {
new C().hello();
}
}
冲突并不总是可以避免的。如果在上面的例子中,接口B没有继承A,那么C将从无关接口继承与签名匹配的缺省的方法。编译的代码将产生错误信息:
class C inherits unrelated defaults for hello() from types A and B//类C从A和B中继承了不相关的缺省方法hello
reference to hello is ambiguous, both method hello() in A and method hello() in B match.//从A和B到hello的引用是二义性的,A中的hello和B中的hello都匹配。
注意,第一个错误将报告是否有一个调用到继承的默认方法。冲突必须通过重写来解决。如果需要的话,对继承方法之一可以使用新的语法X.super.m(...),其中X是超接口,m是其选择的方法:
public class C implements B, A {
public void hello() {
A.super.hello();
}
...
}
现在打印“Hello World from A”。注意这个语法只能用于解决冲突,不覆盖上面列出的两个主要规则。
原文链接:http://www.lambdafaq.org/how-are-conflicting-method-declarations-resolved/
分享到:
相关推荐
从关联理论看翻译中文化缺省问题---英语论文精修.docx
2.如何关闭缺省工具栏?(Visual C++编程 源代码)2.如何关闭缺省工具栏?(Visual C++编程 源代码)2.如何关闭缺省工具栏?(Visual C++编程 源代码)2.如何关闭缺省工具栏?(Visual C++编程 源代码)2.如何关闭...
21.如何关闭缺省状态栏?(Visual C++编程 源代码)21.如何关闭缺省状态栏?(Visual C++编程 源代码)21.如何关闭缺省状态栏?(Visual C++编程 源代码)21.如何关闭缺省状态栏?(Visual C++编程 源代码)21.如何...
Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和...
西门子如何在SCALANCE X414-3E上配置缺省路由?pdf,西门子如何在SCALANCE X414-3E上配置缺省路由?
bashre---为shell用户设置系统范围的缺省设置。(缺省情况下,它的设置shell提示符包含当前用户名,主机名,当前目录和其他值) cdrecord.conf---包含了刻录cd所用的缺省值 crontab---设置cron环境变量和运行自动...
Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和...
行业资料-建筑装置-建立缺省数据无线承载的方法和装置.zip
行业分类-设备装置-一种缺省权限配置的方法和装置.zip
行业分类-设备装置-一种可缺省关键词的挖掘方法、数据搜索方法及设备
行业分类-设备装置-检测缺省网关状态的方法及系统
行业文档-设计装置-缺省承载上策略计费控制规则移除方法和装置.zip
行业文档-设计装置-一种广告位缺省广告的投放方法.zip
爱普生针式打印机EPSONLQ-630K和LQ-635K缺省设值的设置方法.doc
3变量 3.1简单变量 3.2数组 3.3相关命令 3.3.1set 3.3.2unset 3.3.3append和incr 4表达式 4.1操作数 4.2运算符和优先级 4.3数学函数 5List 5.1list命令 5.2concat命令: 5.3lindex命令 5.4llength命令 5.5linsert...
VC、UITableView 常用缺省页、loading页
------------------------------------ IEC-60870-5-104:应用模型是:物理层,链路层,网络层,传输层,应用层 物理层保证数据的正确送达,保证如何避免冲突。(物理层利用如 RS232上利用全双工) 链路层负责具体对...
利用Rough集理论的基本原理和方法,在提出一种缺省规则挖掘策略和算法的基础上,系统地描述了基于缺省规则的决策支持方法,将其应用于汽车故障诊断决策分析中。试用表明,该方法能较好地排除噪声的影响,使决策者在...
在开发中总会碰到列表没有数据的时候 需要一个缺省页。一般的做法是在View上在罩一层缺省页挡住tableView,感觉比较不方便。最近在学安卓和iOS,发现安卓的列表可以自带缺省页!!,于是受到启发写了这个小demo. 这...
S系列交换机缺省帐号与密码.zip