1、Lambda表达式
面向对象编程思想:哪个对象有做这件事的功能就找哪个对象。先创建对象再调方法。
函数式编程思想:函数指的就是方法,不关心是谁,不需要我们创建对象,把创建对象的操作交给jvm完成。
Lambda表达式的好处:
匿名内部类简化了实现类和子类的编写,使用Lambda表达式简化了部分匿名内部类的编写。
格式(记住):(方法的参数列表)->{方法体}
Lambda表达式的简化方式(记住):
简化1:任何情况下,lambda表达式的参数列表中的参数类型可以省略。
简化2:如果参数列表中有且仅有一个参数,那么()可以省略。
简化3:如果方法体中有且仅有一条语句,那么{}和;一起省略,如果有return,return也必须一起省略。
注意事项(记住):使用条件
1、Lambda表达式只能是接口类型。
2、接口中有且仅有一个抽象方法。
Lambda表达式和匿名内部类的区别?
1、能用Lambda表达式的地方一定可以使用匿名内部类,反过来,能使用匿名内部类的地方不一定可以使用Lambda表达式。
2、匿名内部类在编译之后会生成class文件,Lambda表达式编译之后不会生成class文件。
2、接口
默认方法:
格式:public default 返回值类型 方法名(参数列表){} //public可以省略
例如:
//定义默认方法
default void defaultMethod(){ //默认省略了public
System.out.println("这是Inter接口中的defaultMethod默认方法。。。");
}
注意:默认方法如果被实现类重写,那么执行的就是重写的方法。但是重写的方法没有default关键字
静态方法:
格式:public static 返回值类型 方法名(参数列表){} //public可以省略
例如:
//定义静态方法
static void staticMethod(){
System.out.println("这是Inter接口中的staticMethod静态方法。。。");
}
注意实现:接口的静态方法只能通过接口名调用,不能使用实现类名或者实现类的对象调用。
私有方法:
格式1:private 返回值类型 方法名(参数列表){}
格式2:private static 返回值类型 方法名(参数列表){}
作用:主要用于在接口内部抽取默认方法和静态方法公共部分代码,私有方法只能在接口内部的默认方法和静态方法中访问。
3、方法引用(了解)
方法引用:在Lambda表达式的方法体中,如果方法体的代码有且仅有一条,并且符合 :对象.方法(参数)、类名.方法(参数)、new 对象()
那么就可以直接引用这个方法,来简化lambda表达式的书写。
好处:替换Lambda表达式的书写。
注意事项:如果Lambda表达式参数列表中有参数,那么在使用方法引用时也一定会将这个参数传递给引用的方法。
方法应用的格式:
对象.方法(参数)------>对象::方法名 注意:不需要()
类名.方法(参数)------>类名::方法名
new 对象()---------->类名::new