- 重写=复写 子父类继承之间
-
Java8 的几大特性
Lambda 表达式 − Lambda 允许把函数作为一个方法的参数(函数作为参数传递到方法中)。
- 方法引用 − 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。::
- 默认方法 − 默认方法就是一个在接口里面有了一个实现的方法。
- 新工具 − 新的编译工具,如:Nashorn引擎 jjs、 类依赖分析器jdeps。
- Stream API −新添加的Stream API(java.util.stream) 把真正的函数式编程风格引入到Java中。
- Date Time API − 加强对日期与时间的处理。
Optional 类 − Optional 类已经成为 Java 8 类库的一部分,用来解决空指针异常。
Lambda表达式
lambda 表达式能引用标记了 final 的外层局部变量,这就是说不能在 lambda 内部修改定义在域外的局部变量,否则会编译错误
- lambda 表达式中可以访问外层的局部变量,局部变量可以不用声明为 final,但是必须不可被后面的代码修改(即隐性的具有 final 的语义)
vaiable used in lambda expression should be final or effectively final
方法引用
构造器引用
- 静态方法引用
- 特定类的任意对象的方法引用
- 特定对象的方法引用
-
函数式接口
函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,
- 排除接口默认方法以及声明中覆盖Object的公开方法的统计。
函数式接口可以被隐式转换为 lambda 表达式 - 消费类型 Consumer 代表了接受一个输入参数并且无返回的操作 accept
- 转换类型 Function 接受一个输入参数,返回一个结果。 apply
- 断定类型 Predicate 接受一个输入参数,返回一个布尔值结果 test
- 提供类型 Supplier 无参数,返回一个结果 get
UnaryOperator
- 中间操作(intermediate operation)
- 最终操作(terminal operation)
延迟执行(laziness)和短路( short-circuiting)
默认方法
用于接口
- 默认方法就是接口可以有实现方法,而且不需要实现类去实现其方法
- 这个默认方法可以是静态的
Base64