JDK8新特性之接口默认方法与静态方法
接口默认方法与静态方法
有这样一些场景,如果一个接口要添加一个方法,那所有的接口实现类都要去实现,而某些实现类根本就不需要实现这个方法也要写一个空实现,所以接口默认方法就是为了解决这个问题。
接口静态方法类似于默认方法,但是我们不能在实现类中覆盖它们,可以避免默认方法在实现类中被覆盖实现。
之前讲过的JDK8的list.foreache方法,看下源码,其实也是java.lang.Iterable接口的默认方法。
default void forEach(Consumer<? super T> action) {Objects.requireNonNull(action);for (T t : this) {action.accept(t);}
}
简单的例子
默认方法以 default
修饰,静态方法用 static
。
public static void main(String[] args) {IUserInterface userInterface = new UserServiceImpl();System.out.println(userInterface.getDefaultUser1());System.out.println(IUserInterface.getDefaultUser2());}interface IUserInterface {default User getDefaultUser1() {return new User("Susan1", 11);}static User getDefaultUser2() {return new User("Susan2", 22);}}static class UserServiceImpl implements IUserInterface {}
注意要点
1、接口默认方法、静态方法可以有多个。
2、默认方法通过实例调用,静态方法通过接口名调用。
3、 default
默认方法关键字只能用在接口中。
4、默认方法可以被继承,如果继承了多个接口,多个接口都定义了多个同样的默认方法,实现类需要重写默认方法不然会报错。
5、静态方法不能被继承及覆盖,所以只被具体所在的接口调用。
JDK8新特性之接口默认方法与静态方法相关推荐
- jdk8新特性(接口新特性、lambda表达式、方法引用、函数式接口、Stream流)和单例设计模式
1.单例设计模式 1.概念: 设计模式:使用固有的流程或方式设计出来的类接口.枚举等元素 2.设计原则: 1.私有化构造方法[private.protected] 2.类中创建最终对象[唯一不能被赋值 ...
- 紧随时代的步伐--Java8特性之接口默认方法
1.关于Java8 自从1996年Sun公司发布Java以来,Java到目前为止已经走过21个年头,每一次的升级,都是Java语言的革新,对时代发展的适应.2014年Oracle发布Java8,而据可 ...
- java新特性-函数式接口-作为方法参数-作为方法的返回值-常用函数式接口-Supplier-Consumer-Predicate-Function
文章目录 函数式接口 概念 函数式接口作为方法参数 函数式接口作为方法的返回值 常用函数式接口 Supplier接口 常用函数式接口 Consumer 函数式接口之 Predicate接口 常用接口之 ...
- jdk8新特性-Lambda表达式,方法引用
Lambda方法引用的概念 1).什么是"方法引用":当我们使用Lambda实现一些功能时,发现已有的类库中已经有方法实现了这样的功能,这时,我们就可以引用已实现的方法来代替Lam ...
- 【JDK8 新特性2】JDK 8 接口默认方法/静态方法
目录 1.接口默认方法 1.1 接口默认方法的定义格式 1.2 接口默认方法的使用 1.2.1 实现类直接调用接口默认方法 1.2.2 实现类重写接口默认方法 2.接口静态方法 2.1 接口静态方法的 ...
- Java8新特性总结 - 1.接口新增默认方法和静态方法
所有示例代码打包下载 : 点击打开链接 Java8新特性 : 接口新增默认方法和静态方法 Optional类 Lambda表达式 方法引用 Stream API - 函数式操作流元素集合 Date/ ...
- 反射、注解、动态代理、JDK8新特性
反射.注解.动态代理.JDK8新特性 第一章.反射 1.类的加载 源文件--通过javac编译-->字节码文件---通过Java命令(通过ClassLoader)--->JVM运行字节码文 ...
- 2022 最新 JDK8 新特性 面试题
2022 最新 JDK8 新特性 面试题 1.阐述 Java 7 和 Java 8 的区别 2.Java SE 8中最流行和最著名的最新功能是什么? 3.是什么使Java SE 8优于其他? 4.在J ...
- idea重写接口没有@override_乐字节|Java8核心实战-接口默认方法
JAVA8已经发布很久,是自java5(2004年发布)之后Oracle发布的最重要的一个版本.其中包括语言.编译器.库.工具和JVM等诸多方面的新特性,对于国内外互联网公司来说,Java8是以后技术 ...
最新文章
- cocos2d-xna for win8源代码轻松移植cocos-xna for wp游戏
- 区块链和智能合约的关系
- 我眼中真正优秀的CTO
- js new Date()不带时分秒时,时间变了 问题解决
- python获得用户输入的一个字符串(长度3)_python3 字符串属性(一)
- boost::geometry模块实现自定义Linestring示例
- Flask初识,第五篇 ,做一个用户登录之后查看学员信息的小例子
- Cortex-M3-中断/异常的响应序列
- 如何在Linux下创建与解压zip, tar, tar.gz和tar.bz2文件 .
- python join() 函数的用法
- 这不是特效也不是魔术!
- 用node.js读写文件
- Oracle distinct后加as,【大话IT】为何加distinct之后就不走索引了
- LeetCode 4	Median of Two Sorted Arrays
- 2015-2016-1学期 《信息安全系统设计基础》课程总结
- 安卓用targetSdk来兼容各个版本
- C语言输出规定长度的整数,不够位数前面补零
- windows系统维护工具箱
- android 10 长按Power键跳过关机对话框直接关机
- matlab 三维立方体,使用matlab函数构建三维立方体的几种方法