接口中默认方法修饰为普通方法
在jdk8之前,interface之中可以定义变量和方法,变量必须是public、static、final的,方法必须是public、abstract的,由于这些修饰符都是默认的。
接口定义方法:public 抽象方法 需要子类实现
接口定义变量:public、static、final
在JDK 1.8开始 支持使用static和default 修饰 可以写方法体,不需要子类重写。
方法:
普通方法 可以有方法体
抽象方法 没有方法体需要子类实现 重写。
代码案例
/**
-
@ClassName JDK8Interface
-
@Author 蚂蚁课堂余胜军 QQ644064779 www.mayikt.com
-
@Version V1.0
**/
public interface JDK8Interface {
void addOrder();/**
- 默认方法 可以写方法体
*/
default void getDefaultOrder() {
System.out.println(“我是默认方法 我可以写方法体”);
}
static void getStaticOrder() {
System.out.println(“我是静态的方法 可以写方法体”);
}
} - 默认方法 可以写方法体
/**
- @ClassName JDK8InterfaceImpl
- @Author 蚂蚁课堂余胜军 QQ644064779 www.mayikt.com
- @Version V1.0
/
public class JDK8InterfaceImpl implements JDK8Interface {
/- 默认和静态方法不是我们的抽象方法 ,所以不需要重写
*/
@Override
public void addOrder() {
System.out.println(“addOrder”);
}
}
- 默认和静态方法不是我们的抽象方法 ,所以不需要重写
Lambda表达式
什么是Lambda表达式
LAMBADA 好处: 简化我们匿名内部类的调用。
Lambda+方法引入 代码变得更加精简。
Lambda 表达式(lambda expression)是一个匿名函数,简化我们调用匿名函数的过程。
百度百科介绍:
https://baike.baidu.com/item/Lambda%E8%A1%A8%E8%BE%BE%E5%BC%8F/4585794?fr=aladdin
为什么要使用Lambda表达式
可以非常简洁的形式调用我们的匿名函数接口。
public static void main(String[] args) {
// 1.使用new的实现类的形式调用接口
OrderService orderSerivce1 = new OrderSerivceImpl();
orderSerivce1.addOrder();
// 2.使用匿名内部接口调用
new OrderService() {
@Override
public void addOrder() {
System.out.println(“使用匿名内部类的形式调用接口”);
}
}.addOrder();
// 3.使用lambda调用接口
OrderService orderSerivce2= ()-> System.out.println(“使用lambda调用接口”);
orderSerivce2.addOrder();
}