/** * 函数式接口: * 当接口中里面只有一个抽象方法(包括继承父接口的抽象方法)的时候,就是函数式接口, * 可以使用注解强制限定接口中只有一个抽象方法 * 注解:从java5开始引入注解。利用注解对字节码文件进行一些说明。 * @FunctionalInterface注解的作用是用于在编译时告诉编译器该接口只能有一个抽象方法 * 使用FunctionalInterface注解的接口,并且只有一个抽象方法,称为是函数式接口 * lambda表达式只能针对函数接口使用: * * 接口中的静态方法: * 从Java8开始接口里面可以有静态方法,和普通类里面的静态方法类似,使用static修饰,但是在接口里面的只能是public的 * public static <返回值> 方法名(<形参列表>){ * 方法体 * } * * 注意点: * 1.如果继承了多个父接口,有重复的默认方法被继承到子接口,必须使用super引用明确指定调用哪个接口的默认方法 * 父接口类名.super.重复的方法名<参数>; * 2.同样,如果实现了多个父接口,遇到有重复的默认方法,也需要重写重复的方法,使用super引用解决问题,和接口一样 * 3.父接口的抽象方法,在子接口里面可以使用默认方法实现,这样实现类中就不需要在实现了 * 如果实现类在去实现默认方法,那么相当于是“方法覆盖” * 4.如果父接口中有一个抽象方法,在子接口里面可以重写抽象方法(去掉父接口的行为) * */
Lambda的简单练习: