目录
第一篇:JDK8新特性一:引入介绍
第二篇:JDK8新特性二:Lambda表达式引入介绍
第三篇:JDK8新特性二:Lambda表达式规范和语法
第四篇:JDK8新特性二:方法引入详述
第五篇:JDK8新特性二:foreach、排序、线程调用简单示例
第六篇:JDK8新特性三:Stream流+常见方法演示
第七篇:JDK8新特性四:Optional类的学习
JDK8新特性
一 引入介绍
-
在jdk8之前,interface中可以定义变量和方法,变量默认是public static final的,方法默认是public abstract的,这些修饰符也都是默认存在的。
-
jdk8之后,interface中开始支持使用static和default修饰,可以写方法体,不需要实现类强制重写
-
代码示例
-
接口
package com.fc; /** * @ClassName JDK8Interface * @Description JDK8新特性-接口中默认方法修饰为普通方法 * @Author Fclever * @Date 2021/7/15 23:27 */ public interface JDK8Interface { /** * 接口中变量默认修饰符就是public static final * IDEA会自动灰色提示 */ public static final int num = 0; /** * 接口中方法默认修饰符就是public abstrat * IDEA会自动灰色提示 */ public abstract void add(); /** * 这样写,IDEA会提示“在接口中无法定义方法体” */ // void get() { // System.out.println("get"); // } /** * jdk8提供默认方法 * 在实现类中不会被要求强制重写 */ default void defaultMethod() { System.out.println("defaultMethod"); } /** * 也可以使用static静态方法 * 在实现类中不会被要求强制重写 */ static void staticMethod() { System.out.println("staticMethod"); } }
-
实现类
package com.fc; /** * @ClassName JDK8InterfaceImpl * @Description 接口实现类 * @Author Fclever * @Date 2021/7/15 23:41 */ public class JDK8InterfaceImpl implements JDK8Interface{ /** * 实现类中不会强制重写接口中的default、static方法 */ @Override public void add() { System.out.println("add"); } }
-
测试
package com.fc; /** * @ClassName Test01 * @Description * @Author Fclever * @Date 2021/7/15 23:46 */ public class Test01 { public static void main(String[] args) { JDK8Interface jdk8Interface = new JDK8InterfaceImpl(); jdk8Interface.add(); jdk8Interface.defaultMethod(); JDK8Interface.staticMethod(); } }
-
-
作用
- 当某个接口被多个实现类所实现的时候,如果对于某个接口中的方法,实现内容都相同时,如果采用以前的方法定义,那么在实现类中都必须将此方法重写,无疑会提高代码的冗余度,jdk8之后接口中可以定义默认方法,这样子就可以直接统一在接口中编写好方法体,供实现类调用即可
- 实现类中可以使用接口中的default方法,也可以将其重写
- 实现类中不能直接通过对象调用的方式来使用static方法,只能被接口自身调用,而且无法被实现类重写。