`

1.接口默认方法

阅读更多
在java8中接口可以实现默认方法 ,使用default 关键字
package com.dx;

public interface Caculate {


    default int sum( int i,int k){
       return  i+k;
    }

      void sayHello(String msg);
}


当然实现接口的类可以选择实现或者不实现默认接口方法。

提问:为什么要新加入默认方法的特性呢?

假设一个场景,现在有一个接口,而且有很多实现类都实现了这个接口,如果要对这个接口添加新的方法,那么按照接口语义所有子类都必须实现这个方法,在很多大型的系统中这将是一场噩梦,谁知道将来或许又会添加新的改动,这是接口的一个弊端。当然你可能会问为什么不用抽象类呢?(不想回答)

现在Java新版本的开发就遇到这么一个问题,List 接口中需要添加Stream API。这就会导致两个问题:a .Java版本变更需要满足向下兼容 b.需要修改所有List接口但实现类  。
所以接口默认方法特性主要是主要是为了方便类库设计人员,降低维护成本,增加接口的可扩展性。
分享到:
评论

相关推荐

    接口默认方法与静态方法1

    默认方法:Java8允许接口中包含具有具体实现的方法,该方法称为“默认方法”,使用default、关键字修饰“类优先”原则:若一个接口中定义了一个默认方法,而另

    Java面试突击-V3.0.pdf

    1. 接口的方法默认是 public,所有方法在接口中不能有实现(Java 8 开始接口方法可以有默认实现),抽象类可以 有非抽象的方法 ...两个接口,接口中定义了一样的默认方法,必须重写,不然会报错。(详见

    1.5:接口和抽象类的区别.pdf

    1. 小结 1.abstract class 在c#语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。 2.在abstract class 中可以有...7.接口中的方法默认都是 public,abstract 类型的。

    java接口方法概述集合详解.docx

    1、接口是Java语言中的一种引用类型,是方法的"集合",所以接口的内部主要就是定义方法,包含常量,抽象方法(JDK 7及以前),额外增加默认方法和静态方法(JDK 8),额外增加私有方法(jdk9)。 接口的定义,它与定义类...

    jdk1.8-windows-64.zip

    3. 接口默认方法和静态方法:接口可以包含默认方法和静态方法,使得开发者能够更方便地扩展接口的功能。 4. 新的日期和时间API:JDK1.8引入了全新的日期和时间API,解决了老版本中的一些问题,并提供了更好的性能和...

    【小白系列之骐程4】接口.txt

    接口(是一种特殊的类,类似于类,有具体的属性,但是方法是抽象的方法) 定义: 关键字:interface(类是class) 常量(类似于类的属性,但是1.常量必须给定初始值,且不能修改(final);2.两个关键字ststic、...

    Java基础知识点概括

    1.阐述 Java 7 和 Java 8 的...16.接口默认方法和静态方法 17.引入了流Stream 18.可以重复注解 19.集合引入了很多parallel开头的并行操作的方法 20.日期时间 21.Nashorn javascript 引擎 22.Base64 23.并行数组 24.并发

    全文搜索集成-JAVA版接口API说明文档.doc

    3.3 搜索doSearch接口方法 8 3.1.1 默认doSearch接口 8 3.1.2 指定数据库表doSearch接口 9 3.4 配置文件SphinxClientCfg 10 3.5 查询结果格式化 11 3.5.1 查询结果字段说明 11 3.5.2格式化json 12 3.5.3格式化xml 13

    Java中抽象类和接口的区别

    1.abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。  2.在abstract class 中可以有自己的...接口中的方法默认都是 public,abstract 类型的。

    IBM portlet开发指南

    1 第一章节 入门介绍 ......................................................................................................................... 7 一、 Portlet简介 .........................................

    微软 C#语言参考 CHM格式

    13.2.1 接口方法... 227 13.2.2 接口属性... 227 13.2.3 接口事件... 228 13.2.4 接口索引... 228 13.2.5 接口成员访问... 228 13.3 完全有效的接口成员名称... 230 13.4 接口实现... 230 13.4.1 显式接口成员实现...

    EMC5100存储默认登陆方法.docx

    连接机器后置管理口,机器后部有个网线接口旁边标注有小扳手图标,插入网线 然后将笔记本IP改为:128.221.1.249 掩码255.255.255.248

    dw1000用户手册翻译v0.2.pdf

    2.2.1 SPI 接口...........................................................................................................9 2.2.2 中断......................................................................

    Java™ Servlet 规范.

    Servlet 接口 ...................... 15 2.1 请求处理方法 ...........................................................................................................................................15 ...

    Java基础 接口.pdf

    1、接口中的所有方法都是抽象的,不能有具体实现。 2、接口定义的常量默认是 public static final 的。 3、一个类可以实现多个接口,实现接口使用 implements 关键字。 4、接口不能被实例化。 5、接口可以继承另外一...

    Golang2-new.docx

    1. 入门 1 1.1. Hello world 1 1.2. 命令行参数 2 2. 程序结构 3 2.1. 类型 4 2.1.1. 命名类型(named type)与未命名类型(unamed type) 4 2.1.2. 基础类型(underlying type) 4 2.1.3. 可赋值性 5 2.1.4...

    Eclipse权威开发指南1.pdf

    7.4.2 扩展用户界面的常用方法.... 186 7.4.3 用户界面的扩展怎样感知某些事件(如用户的选择)?..... 189 7.4.4 怎样扩展对象(如显示在Outline视图中的对象). 193 7.4.5 不同视图中显示的相同对象之间的...

    java8源码-java8-character:java8新特性

    1.接口的静态方法和默认方法 java8之前,接口只允许存在抽象方法,即默认被public abstract修饰 java8新增静态方法和默认方法 ######1.1静态方法 1.接口中允许存在被static修饰的方法且该方法必须有方法体 2.接口中的...

    webx3框架指南PDF教程附学习Demo

    1. 阅读向导 ............................................................................................................. ix 2. Webx是什么? ............................................................

Global site tag (gtag.js) - Google Analytics