Java8新特性_接口中的默认方法
默认方法由来猜想
1. Collection接口、Collections公共类。 同是操作集合,为啥要搞俩?没必要。在接口中搞一些默认实现,一个接口即搞定了。
2. Java8支持Lambda表达式,需要函数式接口。而函数式接口只允许有一个方法的声明。而为了兼容7或之前的版本的Java,用default 声明成默认方法。既不影响它是一个方法声明的函数式接口,也不影响它有多个其它需求的方法,兼容Java之前版本的一些接口的声明。
接口默认方法的类优先原则
若一个接口中定义了一个默认方法,而另外一个父类或接口中又定义了另外一个同名方法时,
1、选择父类中的方法。 如果一个父类提供了一个具体的实现,那么接口中具有相同名称和参数的默认方法会被忽略。
2、接口冲突。 如果一个父接口提供一个默认方法,而另一个接口也提供了一个具有相同名称和参数列表的方法(不管方法是否是默认方法)那么必须覆盖改方法来解决冲突。
public interface MyInterface01 {default void invoke() {System.out.println("MyInterface01");}}
@FunctionalInterface public interface MyInterface02 {/*** 可以有默认的方法的实现*/default void invoke() {System.out.println("MyInterface02");}/*** 可以有静态方法*/static void show() {System.out.println("This is interface's static method show() ");}/**函数式接口的声明,only one*/void test();}
public class FatherClass {void invoke() {System.out.println("FatherClass");} }
public class MyFun extends FatherClass implements MyInterface01,MyInterface02{// @Override // public void invoke() { // MyInterface01.super.invoke(); // MyInterface02.super.invoke(); // } @Overridepublic void invoke() {super.invoke();}public static void main(String[] args) {MyFun fun = new MyFun();fun.invoke();} }
转载于:https://www.cnblogs.com/guchunchao/p/10324208.html
Java8新特性_接口中的默认方法相关推荐
- 接口中默认方法和静态方法_接口中的默认方法和静态方法
接口中默认方法和静态方法 在我们最初的Java 8支持公告中,我们特别提到了流的缺乏,但完全错过了默认/静态本机接口不起作用的事实. 现在,由于有一个警惕的社区成员指出了这一问题,因此此问题已得到解决 ...
- Java8新特性Optional、接口中的默认方法与静态方法
Optional Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念 ...
- Java接口中的默认方法冲突
在Java中,我们可以为其接口中定义的方法提供一个默认的实现.当然,这可能并没有很大的用处,不过,在某些情况下可能很有用!如果要为接口方法提供一个默认实现,必须要用 default关键字 修饰. 在为 ...
- java8新特性_乐字节-Java8新特性-接口默认方法
总概 JAVA8 已经发布很久,而且毫无疑问,java8是自java5(2004年发布)之后的最重要的版本.其中包括语言.编译器.库.工具和JVM等诸多方面的新特性. Java8 新特性列表如下: 接 ...
- java8新特性_乐字节-Java8新特性-函数式接口
上一篇小乐带大家学过 Java8新特性-Lambda表达式,那什么时候可以使用Lambda?通常Lambda表达式是用在函数式接口上使用的.从Java8开始引入了函数式接口,其说明比较简单:函数式接口 ...
- 接口中的默认方法和静态方法
在我们最初的Java 8支持公告中,我们特别提到了缺少流,但是完全错过了默认/静态本机接口不起作用的事实. 现在,由于有一个警惕的社区成员指出了这一问题,因此此问题已得到解决. 由于限制需要全新构建才 ...
- Java8新特性:接口的默认方法与接口的静态方法
https://www.cnblogs.com/yanhw/archive/2018/01/01/8169086.html https://blog.csdn.net/kimylrong/articl ...
- java第四弹 多态 final static 代码块 抽象类 匿名类 接口 Java8新特性:接口增强
1.多态 多态的理解 (1)同一个动作作用于不同的对象产生的不同的行为,比如不同子类对父类的不同的重写. (2)多态就是一个对象的多种形态. 多态的体现 (1)基于继承的实现,不同子类重写了父类方法之 ...
- ES6新特性_浏览器中使用ES6模块化的另一种方式--JavaScript_ECMAScript_ES6-ES11新特性工作笔记044
然后我们再来看一下,es6的模块化在,浏览器使用的第二种方式 这里比如我有个aap.js,这个js呢,算是我们一个入口的文件 在这个里面我们可以引入 其他的js模块,比如我这个里面引入了m1.js 然 ...
最新文章
- 对输入框进行探索性测试思路
- [Swift]枚举、类与结构体的对比
- Lucene教程具体解释
- 避障机器人程序c语言,基于51单片机小车寻迹、避障源程序(注释很详细)
- hp designiet 500绘图仪程序_邹军:通过数控宏程序实现刀具寿命管理
- virtualenv在ubuntu系统中的缺点
- SpringMVC的上传与下载
- mysql断开同步并记录位置_数据库同步自动断开问题的处理
- windows核心编程读书笔记(一)
- Android Service: 启动service, 停止service
- 【转】将QT开发的界面程序封装成DLL,在VC中成功调用
- lucene学习-3 - 代码重构
- 操作手机数据库的uri
- bzoj 1663: [Usaco2006 Open]赶集(最长路)
- DOM元素的大小和位置
- 使用mysql 函数 IFNULL 解决某些字段为null
- Java基础——从数组到集合之间关键字的区别!!!!
- java2实用教程第五版耿祥义电子版_Java2实用教程(第5版)答案_耿祥义
- oracle错误代码03113,Oracle ora-03113错误的处理
- autojs遍历当前页面所有控件_解放双手,手机自动化神器AutoJS的使用
热门文章
- Python学习笔记(迭代、模块扩展、GUI 、编码处理等)
- scala之Akka的Actor模型(上)
- 使用jQuery获取GridView的数据行的数量
- oracle读写文件--利用utl_file包对磁盘文件的读写操作
- 修改Win7远程桌面端口
- python学习手记 pt1
- 3dMax-win-64bit软件的安装-配置
- 软考信息系统项目管理师_信息化与信息系统2_常规信息系统集成技术_软件工程---软考高级之信息系统项目管理师004
- 软考信息系统项目管理师_考试题型介绍_选择题75分_45分过_案例分析题_75分_45分过_计算题_论文题的架构和写法---软考高级之信息系统项目管理师002
- ES6新特性_ES6集合介绍与API---JavaScript_ECMAScript_ES6-ES11新特性工作笔记030