默认方法由来猜想

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新特性_接口中的默认方法相关推荐

  1. 接口中默认方法和静态方法_接口中的默认方法和静态方法

    接口中默认方法和静态方法 在我们最初的Java 8支持公告中,我们特别提到了流的缺乏,但完全错过了默认/静态本机接口不起作用的事实. 现在,由于有一个警惕的社区成员指出了这一问题,因此此问题已得到解决 ...

  2. Java8新特性Optional、接口中的默认方法与静态方法

    Optional Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念 ...

  3. Java接口中的默认方法冲突

    在Java中,我们可以为其接口中定义的方法提供一个默认的实现.当然,这可能并没有很大的用处,不过,在某些情况下可能很有用!如果要为接口方法提供一个默认实现,必须要用 default关键字 修饰. 在为 ...

  4. java8新特性_乐字节-Java8新特性-接口默认方法

    总概 JAVA8 已经发布很久,而且毫无疑问,java8是自java5(2004年发布)之后的最重要的版本.其中包括语言.编译器.库.工具和JVM等诸多方面的新特性. Java8 新特性列表如下: 接 ...

  5. java8新特性_乐字节-Java8新特性-函数式接口

    上一篇小乐带大家学过 Java8新特性-Lambda表达式,那什么时候可以使用Lambda?通常Lambda表达式是用在函数式接口上使用的.从Java8开始引入了函数式接口,其说明比较简单:函数式接口 ...

  6. 接口中的默认方法和静态方法

    在我们最初的Java 8支持公告中,我们特别提到了缺少流,但是完全错过了默认/静态本机接口不起作用的事实. 现在,由于有一个警惕的社区成员指出了这一问题,因此此问题已得到解决. 由于限制需要全新构建才 ...

  7. Java8新特性:接口的默认方法与接口的静态方法

    https://www.cnblogs.com/yanhw/archive/2018/01/01/8169086.html https://blog.csdn.net/kimylrong/articl ...

  8. java第四弹 多态 final static 代码块 抽象类 匿名类 接口 Java8新特性:接口增强

    1.多态 多态的理解 (1)同一个动作作用于不同的对象产生的不同的行为,比如不同子类对父类的不同的重写. (2)多态就是一个对象的多种形态. 多态的体现 (1)基于继承的实现,不同子类重写了父类方法之 ...

  9. ES6新特性_浏览器中使用ES6模块化的另一种方式--JavaScript_ECMAScript_ES6-ES11新特性工作笔记044

    然后我们再来看一下,es6的模块化在,浏览器使用的第二种方式 这里比如我有个aap.js,这个js呢,算是我们一个入口的文件 在这个里面我们可以引入 其他的js模块,比如我这个里面引入了m1.js 然 ...

最新文章

  1. 对输入框进行探索性测试思路
  2. [Swift]枚举、类与结构体的对比
  3. Lucene教程具体解释
  4. 避障机器人程序c语言,基于51单片机小车寻迹、避障源程序(注释很详细)
  5. hp designiet 500绘图仪程序_邹军:通过数控宏程序实现刀具寿命管理
  6. virtualenv在ubuntu系统中的缺点
  7. SpringMVC的上传与下载
  8. mysql断开同步并记录位置_数据库同步自动断开问题的处理
  9. windows核心编程读书笔记(一)
  10. Android Service: 启动service, 停止service
  11. 【转】将QT开发的界面程序封装成DLL,在VC中成功调用
  12. lucene学习-3 - 代码重构
  13. 操作手机数据库的uri
  14. bzoj 1663: [Usaco2006 Open]赶集(最长路)
  15. DOM元素的大小和位置
  16. 使用mysql 函数 IFNULL 解决某些字段为null
  17. Java基础——从数组到集合之间关键字的区别!!!!
  18. java2实用教程第五版耿祥义电子版_Java2实用教程(第5版)答案_耿祥义
  19. oracle错误代码03113,Oracle ora-03113错误的处理
  20. autojs遍历当前页面所有控件_解放双手,手机自动化神器AutoJS的使用

热门文章

  1. Python学习笔记(迭代、模块扩展、GUI 、编码处理等)
  2. scala之Akka的Actor模型(上)
  3. 使用jQuery获取GridView的数据行的数量
  4. oracle读写文件--利用utl_file包对磁盘文件的读写操作
  5. 修改Win7远程桌面端口
  6. python学习手记 pt1
  7. 3dMax-win-64bit软件的安装-配置
  8. 软考信息系统项目管理师_信息化与信息系统2_常规信息系统集成技术_软件工程---软考高级之信息系统项目管理师004
  9. 软考信息系统项目管理师_考试题型介绍_选择题75分_45分过_案例分析题_75分_45分过_计算题_论文题的架构和写法---软考高级之信息系统项目管理师002
  10. ES6新特性_ES6集合介绍与API---JavaScript_ECMAScript_ES6-ES11新特性工作笔记030