/**
*@className: TestLamda1
*@description: lamda表达式应用
*@author: jj.liu
*@create: 2021-10-13 14:56
*/
public class TestLamda1 {
static class Motorcycle2 implements Car{
@Override
public void drive() {
System.out.println("学习摩托车驾驶。。。222");
}
}
public static void main(String[] args) {
//1、创建接口实现类对象
Car car1 = new Motorcycle();
car1.drive();
//2、使用静态内部类调用
Car car2 = new Motorcycle2();
car2.drive();
//3、使用局部内部类调用
class Motorcycle3 implements Car{
@Override
public void drive() {
System.out.println("学习摩托车驾驶。。。333");
}
}
Car car3 = new Motorcycle3();
car3.drive();
//4、使用匿名内部类,没有类的名称,必须借助接口或者父类
Car car4 = new Car() {
@Override
public void drive() {
System.out.println("学习摩托车驾驶。。。444");
}
};
car4.drive();
//5、使用lamda表达式
Car car5 = () -> {
System.out.println("学习摩托车驾驶。。。555");
};
car5.drive();
//6、简写
Car car6 = () -> System.out.println("学习摩托车驾驶。。。666");
//如果该接口抽象方法有参数,例如(int a),那么上面表达式可简写为:Car car6 = a -> System.out.println("学习摩托车驾驶。。。666");
car6.drive();
//总结:1、避免匿名内部类定义过多
// 2、其实质属于函数式编程得概念
//任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口
//对于函数式接口,我们可以通过lamda表达式来创建该接口得对象。
}
}
interface Car{
void drive();
}
class Motorcycle implements Car{
@Override
public void drive() {
System.out.println("学习摩托车驾驶。。。111");
}
}