面对对象高级

函数式编程

Lambda

在这里插入图片描述

在这里插入图片描述

package com.itheima.lambda;

public class LambadDemo1 {
    public static void main(String[] args) {
        //目标:认识Lambda表达式,搞清楚其基本作用
        Animal a = new Animal() {
            @Override
            public void cry() {
                System.out.println("叫了一声");
            }
        };
        a.cry();

        //错误示范:Lambda表达式不可以简化其全部的匿名内部类,Lambda只能简化函数式接口的匿名内部类
//        Animal a1 =  ()->{
//                System.out.println("叫了一声");
//        };
//        a1.cry();

        //没有报错。Lambda只能简化函数式接口的匿名内部类
        System.out.println("-----------------");

        Swim s = ()->{
            System.out.println("正在游泳");
        };
    }
}

abstract class Animal{
    public abstract void cry();
}

//函数式接口:只有一个抽象方法的接口
@FunctionalInterface//声明函数式接口的注解
interface Swim{
    void swimming();
}

Lambda小结

在这里插入图片描述
ps:@Funcationallnterface注解相当于声明

Lambda实战示例、省略规则

在这里插入图片描述

Arrays.sort(students,(01,02 -> {
    return 01.getAge() - 02.getAge();
});

//规则3
Arrays.sort(students,(01,02 ->01.getAge() - 02.getAge());

方法引用

静态方法的引用

在这里插入图片描述

在这里插入图片描述

更多推荐