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