/** *@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"); } }