版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
講師:XXX時(shí)間:
年
月目錄CONTENTWS01.項(xiàng)目開(kāi)發(fā)環(huán)境搭建02.學(xué)生成績(jī)管理03.學(xué)生基本信息管理04.不同類別學(xué)生信息管理05.學(xué)生基本信息查找與計(jì)算目錄CONTENTWS06.使用集合實(shí)現(xiàn)學(xué)生信息管理07.學(xué)生信息管理系統(tǒng)異常處理08.使用文件實(shí)現(xiàn)學(xué)生信息存儲(chǔ)09.使用JDBC實(shí)現(xiàn)學(xué)生信息管理10.圖書(shū)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)項(xiàng)目
四
不同類別學(xué)生信息管理項(xiàng)目4不同類別學(xué)生信息管理任務(wù)一面向?qū)ο蟪痰娜蠛诵奶匦匀蝿?wù)二
抽象類和接口知識(shí)目標(biāo)掌握封裝的實(shí)現(xiàn)方法。掌握繼承的實(shí)現(xiàn)方法,包括
extends
和
super
關(guān)鍵字的用法,以及方法重寫(xiě)的方法,理解方法重寫(xiě)和方法重載的區(qū)別。掌握多態(tài)的實(shí)現(xiàn)方法。掌握抽象類和抽象方法的用法。了解接口的概念,掌握定義和實(shí)現(xiàn)接口的方法,以及接口中默認(rèn)方法的用法。了解函數(shù)式接口的概念,掌握定義和實(shí)現(xiàn)函數(shù)式接口的方法。能力目標(biāo)能夠正確使用封裝、繼承和多態(tài),并合理使用抽象類和接口實(shí)現(xiàn)繼承和多態(tài)。能夠使用接口的高級(jí)特性簡(jiǎn)化代碼,提高程序的可讀性。素養(yǎng)目標(biāo)養(yǎng)成持續(xù)學(xué)習(xí)和不斷探索的良好習(xí)慣。樹(shù)立規(guī)則意識(shí)與標(biāo)準(zhǔn)化思維,增強(qiáng)責(zé)任意識(shí)。點(diǎn)擊跳過(guò)情境掃碼觀看“不同類別學(xué)生信息管理”視頻,討論并回答下列問(wèn)題問(wèn)題1:學(xué)生信息管理系統(tǒng)中學(xué)生可以分為哪些類別?問(wèn)題2:如何使用Java對(duì)不同類別學(xué)生信息進(jìn)行統(tǒng)一管理?掃碼學(xué)習(xí)不同類別學(xué)生信息管理任務(wù)一面向?qū)ο缶幊痰娜蠛诵奶匦苑庋b原則
將必要方法設(shè)為公共以供外部調(diào)用,其余成員定義為私有,避免直接訪問(wèn),確保數(shù)據(jù)安全與邏輯隔離。方法設(shè)計(jì)
私有成員通過(guò)公共的getter與setter方法訪問(wèn),外部通過(guò)標(biāo)準(zhǔn)接口控制數(shù)據(jù)讀寫(xiě),實(shí)現(xiàn)可控性與擴(kuò)展性。Getter方法和Setter
方法在
Java
中,Getter方法和Setter
方法是用于獲取和設(shè)置類中私有成員變量的公共方法,是實(shí)現(xiàn)封裝的重要手段。Getter
方法不接收任何參數(shù),返回值類型與要獲取的成員變量類型一致,其命名規(guī)則一般是
get
加上成員變量名,且成員變量名首字母大寫(xiě),如getXxx();Setter
方法接收一個(gè)與要設(shè)置的成員變量類型相同的參數(shù),返回值類型通常為
void,其命名規(guī)則一般是
set
加上成員變量名,且成員變量名首字母大寫(xiě),如setXxx()。實(shí)例:4-1封裝【問(wèn)題分析】
在項(xiàng)目的
src
目錄下新建
project4.example4_1
包,在包中定義員工類Employee,包含
name(姓名)、phone(聯(lián)系方式)和
address(家庭住址)3
個(gè)私有成員變量,以及獲取和設(shè)置這些變量值的
Getter
方法和
Setter
方法;然后定義測(cè)試類EmployeeTest,在類中創(chuàng)建
Employee
類對(duì)象,通過(guò)該對(duì)象調(diào)用
Setter
方法設(shè)置變量的值,調(diào)用Getter方法獲取變量的值?!具\(yùn)行結(jié)果】實(shí)例:4-1封裝【參考代碼】/*Employee.java*/packageproject4.example4_1; //聲明包publicclassEmployee{……(詳見(jiàn)教材)
自動(dòng)生成Getter方法和Setter方法
在
IntelliJIDEA
中可以自動(dòng)生成所有變量的
Getter
方法和
Setter
方法,具體步驟是,右擊添加
Getter
方法和
Setter
方法的區(qū)域,在彈出的快捷菜單中選擇“生成”選項(xiàng),在彈出的子菜單中選擇“Getter
和
Setter”選項(xiàng),打開(kāi)“選擇要生成
Getter
和Setter
的字段”對(duì)話框,按住“Ctrl”鍵的同時(shí)選中所有字段,最后單擊“確定”按鈕。自動(dòng)生成Getter方法和Setter方法isa關(guān)系A(chǔ)類繼承B類需滿足“A是B”的語(yǔ)義關(guān)系,如Dog類繼承Animal類,體現(xiàn)對(duì)象間的必然從屬特征。。繼承定義
繼承表示兩個(gè)類之間的從屬關(guān)系,子類可繼承父類成員變量與方法,并支持重新定義或擴(kuò)展新內(nèi)容。1.extends關(guān)鍵字在Java中,使用extends關(guān)鍵字實(shí)現(xiàn)類的繼承。[類修飾符]class子類名extends父類名{//類體}語(yǔ)法格式繼承不改變類成員的訪問(wèn)權(quán)限,也就是說(shuō),如果父類的成員定義為公共的、受保護(hù)的或默認(rèn)的,那么子類繼承的成員仍具有相同的訪問(wèn)權(quán)限。子類不能繼承父類的私有成員和構(gòu)造方法。
繼承不改變類成員的訪問(wèn)權(quán)限,也就是說(shuō),如果父類的成員定義為公共的、受保護(hù)的或默認(rèn)的,那么子類繼承的成員仍具有相同的訪問(wèn)權(quán)限。實(shí)例:4-2繼承【問(wèn)題分析】
首先定義父類
Animal,包含
category(種類)變量、setCategory()方法和
say()方法,然后定義繼承
Animal類的子類Dog,包含food(食物)變量和eat()方法,最后定義
AnimalTest
類,在類中創(chuàng)建
Animal
類對(duì)象,調(diào)用
Animal
類的方法,創(chuàng)建
Dog類對(duì)象,調(diào)用Animal類和Dog類的方法?!具\(yùn)行結(jié)果】實(shí)例:4-2繼承【參考代碼】/*Animal.java*/packageproject4.example4_2; //聲明包publicclassAnimal{……(詳見(jiàn)教材)
2.方法重寫(xiě)概述
方法重寫(xiě)也稱方法覆蓋,是指在子類中重新實(shí)現(xiàn)父類的方法,要求子類方法的方法名、返回值類型、形參列表(包括參數(shù)的類型、數(shù)量和順序)和父類方法的一樣,只是方法體不同,以實(shí)現(xiàn)不同于父類方法的功能。條件(1)子類中重寫(xiě)方法的訪問(wèn)權(quán)限不能比父類中被重寫(xiě)方法的訪問(wèn)權(quán)限小。(2)子類中重寫(xiě)方法不能比父類中被重寫(xiě)方法拋出更多的異常。方法重寫(xiě)和方法重載的區(qū)別①
方法重寫(xiě)要求形參列表必須相同,而方法重載要求形參列表必須不同。②
方法重寫(xiě)要求返回值類型必須相同,而方法重載對(duì)此不做要求。③
方法重寫(xiě)只能在子類中重寫(xiě)父類的方法,而方法重載可以重載同一個(gè)類的所有方法,包括從父類繼承的方法。④
方法重寫(xiě)對(duì)方法的訪問(wèn)權(quán)限和拋出的異常有特殊的要求,而方法重載對(duì)此不做要求。⑤
父類的方法只能在子類中重寫(xiě)一次,而方法可以在同一個(gè)類中重載多次。【問(wèn)題分析】實(shí)例:4-3方法重寫(xiě)
首先定義父類Animal,包含
say()方法,然后定義繼承
Animal
類的子類
Rabbit
和
Dog,分別在子類中重寫(xiě)
say()方法,最后定義
AnimalTest
類,在類中創(chuàng)建父類和子類的對(duì)象,分別調(diào)用say()方法?!具\(yùn)行結(jié)果】實(shí)例:4-3方法重寫(xiě)【參考代碼】/*Animal.java*/packageproject4.example4_3; //聲明包publicclassAnimal{……(詳見(jiàn)教材)
@Override@Override
注解用于顯式聲明方法重寫(xiě)。如果使用了@Override,編譯器會(huì)驗(yàn)證@Override注解下面的方法是否存在父類中,如果不存在則會(huì)報(bào)錯(cuò)。3.super關(guān)鍵字
(1)使用
super
關(guān)鍵字訪問(wèn)直接父類的非私有成員變量和調(diào)用直接父類的非私有成員方法。super.成員變量名; //訪問(wèn)直接父類的成員變量super.成員方法名([實(shí)參列表]); //調(diào)用直接父類的成員方法語(yǔ)法格式如果子類中定義了與父類同名的成員變量或重寫(xiě)了父類的成員方法,父類的成員變量和成員方法會(huì)被隱藏,此時(shí)在子類中需要使用
super
關(guān)鍵字訪問(wèn)父類中被隱藏的成員變量和成員方法。(2)使用super關(guān)鍵字調(diào)用直接父類的構(gòu)造方法。super(); //調(diào)用直接父類無(wú)參數(shù)的構(gòu)造方法super(實(shí)參列表); //調(diào)用直接父類帶參數(shù)的構(gòu)造方法語(yǔ)法格式由于子類不能繼承父類的構(gòu)造方法,因此必須在子類構(gòu)造方法的第一行使用
super
關(guān)鍵字顯式調(diào)用父類的構(gòu)造方法。super
關(guān)鍵字super
關(guān)鍵字只能在構(gòu)造方法和實(shí)例方法中使用,不能在靜態(tài)方法和靜態(tài)語(yǔ)句塊中使用。
在子類的構(gòu)造方法中必須調(diào)用父類的構(gòu)造方法,調(diào)用方法包括通過(guò)
super
關(guān)鍵字顯式調(diào)用父類的構(gòu)造方法;不使用
super
關(guān)鍵字,由編譯器隱式調(diào)用父類的無(wú)參數(shù)的構(gòu)造方法。需要注意的是,若父類沒(méi)有無(wú)參數(shù)的構(gòu)造方法,在子類中必須顯式調(diào)用父類的帶參數(shù)的構(gòu)造方法,否則編譯會(huì)報(bào)錯(cuò)?!緟⒖即a】實(shí)例:4-4使用super關(guān)鍵字【運(yùn)行結(jié)果】/*Animal.java*/packageproject4.example4_4; //聲明包publicclassAnimal{……(詳見(jiàn)教材)
多態(tài)定義
多態(tài)指不同對(duì)象調(diào)用同一方法時(shí)呈現(xiàn)不同形態(tài),分為編譯時(shí)與運(yùn)行時(shí)多態(tài),分別通過(guò)方法重載和繼承機(jī)制實(shí)現(xiàn)。編譯時(shí)多態(tài)編譯時(shí)多態(tài)通過(guò)方法重載實(shí)現(xiàn),依據(jù)實(shí)參列表差異在編譯階段確定調(diào)用方法,屬于靜態(tài)類型綁定機(jī)制?!具\(yùn)行結(jié)果】實(shí)例:4-5運(yùn)行時(shí)多態(tài)【參考代碼】/*Vehicle.java*/packageproject4.example4_5; //聲明包publicclassVehicle{……(詳見(jiàn)教材)
123實(shí)施流程
在項(xiàng)目
src
目錄下的
project4
包中新建
task1
包。
在
task1
包中新建學(xué)生管理員類。
在
task1
包中新建
StudentManage
類。創(chuàng)建學(xué)生子類掃碼學(xué)習(xí)4運(yùn)行
StudentManage
類面向?qū)ο缶幊痰娜蠛诵奶匦苑庋b繼承多態(tài)任務(wù)二抽象類和接口抽象類的定義
抽象類即類的抽象,是對(duì)相似類的歸納和總結(jié)。抽象類可以包含抽象方法,這些抽象方法只有聲明而沒(méi)有方法體,具體的方法體由繼承該抽象類的子類來(lái)實(shí)現(xiàn),使得程序功能描述和實(shí)現(xiàn)能夠分離。一個(gè)抽象類可以有多個(gè)子類,抽象方法可以在不同子類中有多種方法體,實(shí)現(xiàn)不同的功能,這就是面向?qū)ο缶幊痰亩鄳B(tài)實(shí)現(xiàn)。定義抽象類和聲明抽象方法的語(yǔ)法格式[public]abstractclass類名{ //定義抽象類……[public]abstract返回值類型
方法名();//聲明抽象方法,必須加分號(hào)}(1)抽象類中可以包含具體方法。(2)抽象類中可以不包含抽象方法,但包含了抽象方法的類必須被定義為抽象類。(3)抽象方法要在子類中實(shí)現(xiàn),所以抽象方法不可以是靜態(tài)的,也不可以是
final
類型的。抽象類和抽象方法【運(yùn)行結(jié)果】實(shí)例:4-6使用抽象類和抽象方法【參考代碼】/*Animal.java*/packageproject4.example4_6;abstractclassAnimal{……(詳見(jiàn)教材)
接口定義
定義行為規(guī)范的抽象類型,用于聲明抽象方法,支持多繼承以實(shí)現(xiàn)多態(tài),允許不同類中存在多種方法體。多態(tài)實(shí)現(xiàn)通過(guò)接口聲明的抽象方法,在不同實(shí)現(xiàn)類中可定義差異化方法體,形成面向?qū)ο缶幊痰亩鄳B(tài)特性。多繼承支持接口允許一個(gè)接口繼承多個(gè)接口,形成層級(jí)結(jié)構(gòu),擴(kuò)展類可同時(shí)實(shí)現(xiàn)多個(gè)父接口的抽象方法。1.定義接口定義接口需要使用interface關(guān)鍵字聲明接口語(yǔ)法格式[public]interface接口名[extends父接口名列表]{ //聲明接口//定義常量//聲明抽象方法}父接口名列表是要繼承的接口名,如果有多個(gè)父接口,父接口之間用英文逗號(hào)隔開(kāi)。示例//定義InterfaceA接口publicinterfaceInterfaceA{voidmethodA(); //聲明抽象方法}//定義InterfaceB接口publicinterfaceInterfaceB{voidmethodB(); //聲明抽象方法}//定義InterfaceC接口,繼承兩個(gè)父接口publicinterfaceInterfaceCextendsInterfaceA,InterfaceB{voidmethodC(); //聲明抽象方法}大寫(xiě)字母“I”
在實(shí)際應(yīng)用中,一般在接口名前加上大寫(xiě)字母“I”,如
IShape、IFood
等,方便開(kāi)發(fā)者快速識(shí)別接口
由于接口中的常量都默認(rèn)為
publicstaticfinal
類型,方法都默認(rèn)為
publicabstract
類型,因此在接口中定義常量和聲明抽象方法時(shí)可以省略修飾符示例publicinterfaceIMessage{ //定義接口doublePI=3.14; //定義常量voidsay(); //聲明抽象方法}2.實(shí)現(xiàn)接口
實(shí)現(xiàn)接口是指一個(gè)類通過(guò)
implements
關(guān)鍵字聲明要實(shí)現(xiàn)的接口,并在類中實(shí)現(xiàn)接口中的所有抽象方法語(yǔ)法格式[public]class類名implements接口名1[,接口名2……]{//實(shí)現(xiàn)接口中的抽象方法}實(shí)現(xiàn)接口的規(guī)則
當(dāng)一個(gè)類實(shí)現(xiàn)接口時(shí),如果未實(shí)現(xiàn)接口中的所有抽象方法,該類必須被聲明為抽象類。抽象方法的聲明與調(diào)用
在實(shí)現(xiàn)抽象方法時(shí),方法必須聲明為public,且方法名和形參列表需與接口中定義的一致。接口引用變量的定義與使用
換口本身不能實(shí)例化,但可以定義接口類型的引用變量,指向?qū)崿F(xiàn)該接口的類的對(duì)象。實(shí)現(xiàn)接口抽象方法
實(shí)現(xiàn)子接口的類,除了實(shí)現(xiàn)子接口中的所有抽象方法,還必須實(shí)現(xiàn)父接口中的所有抽象方法?!締?wèn)題分析】實(shí)例:4-7定義兩個(gè)類實(shí)現(xiàn)一個(gè)接口
使用相機(jī)和手機(jī)都能拍照和瀏覽照片。定義一個(gè)接口,在其中聲明拍照和瀏覽照片抽象方法,然后定義一個(gè)相機(jī)類和一個(gè)手機(jī)類,分別在類中實(shí)現(xiàn)接口中的拍照和瀏覽照片抽象方法。【運(yùn)行結(jié)果】【參考代碼】/*IPhoto.java*/packageproject4.example4_7;publicinterfaceIPhoto{ //聲明接口……(詳見(jiàn)教材)
【問(wèn)題分析】
魚(yú)是一種食物,也是一種動(dòng)物。定義兩個(gè)接口,一個(gè)接口描述魚(yú)是一種食物,另一個(gè)接口描述魚(yú)是一種動(dòng)物,然后定義一個(gè)魚(yú)類實(shí)現(xiàn)兩個(gè)接口。實(shí)例:4-8
定義一個(gè)類實(shí)現(xiàn)兩個(gè)接口【運(yùn)行結(jié)果】【參考代碼】/*IFood.java*/packageproject4.example4_8;publicinterfaceIFood{ //定義食物接口……(詳見(jiàn)教材)
抽象方法
由于系統(tǒng)要求在實(shí)現(xiàn)接口的類中必須實(shí)現(xiàn)接口中的所有抽象方法。因此,一旦修改了接口中的抽象方法,就需要修改實(shí)現(xiàn)接口的所有類。要在接口中添加新的方法,可以定義一個(gè)新接口(子接口)繼承原接口,然后在新接口中聲明新的抽象方法。如果需要使用新接口,可以在實(shí)現(xiàn)原接口的類聲明中將原接口名修改為新接口名,然后在類中實(shí)現(xiàn)新的抽象方法,此時(shí)在類中實(shí)現(xiàn)了新接口和原接口中的所有抽象方法。Java8
引入了接口的默認(rèn)方法(defaultmethod),它允許在接口中定義包含方法體的方法。(1)向后兼容性
在不改變現(xiàn)有代碼的情況下為接口添加新方法。默認(rèn)方法的優(yōu)勢(shì)
將公共方法的方法體放在接口中,避免每個(gè)實(shí)現(xiàn)接口的類都包含相同的代碼。(2)減少重復(fù)代碼
在實(shí)現(xiàn)接口的類中根據(jù)需要選擇是否重寫(xiě)默認(rèn)方法,使接口更加靈活。(3)簡(jiǎn)化
API
設(shè)計(jì)1.定義默認(rèn)方法定義默認(rèn)方法使用default關(guān)鍵字聲明,并為方法提供方法體。示例publicinterfaceMyInterface{//定義一個(gè)默認(rèn)方法defaultvoiddefaultMethod(){System.out.println("這是接口的默認(rèn)方法。");}voidabstractMethod(); //聲明一個(gè)抽象方法}
上述代碼中,defaultMethod()是一個(gè)默認(rèn)方法,有方法體;而
abstractMethod()是一個(gè)抽象方法,沒(méi)有方法體。2.使用默認(rèn)方法在實(shí)現(xiàn)接口的類中可以直接使用默認(rèn)方法,也可以重寫(xiě)默認(rèn)方法。
代碼中,在
MyClass
類中重寫(xiě)了
defaultMethod()方法,因此通過(guò)
myClass
調(diào)用defaultMethod()方法時(shí)輸出重寫(xiě)后的內(nèi)容。publicclassMyClassimplementsMyInterface{//重寫(xiě)默認(rèn)方法@Override……(詳見(jiàn)教材)示例【運(yùn)行結(jié)果】實(shí)例:4-9
使用默認(rèn)方法【參考代碼】/*IFly.java*/packageproject4.example4_9;publicinterfaceIFly{ //定義IFly接口……(詳見(jiàn)教材)
在實(shí)現(xiàn)接口的類中重寫(xiě)默認(rèn)方法時(shí),可以使用
super
關(guān)鍵字調(diào)用指定接口的默認(rèn)方法。例如,在例
4-9
的
Duck
類的
move()方法中,可以使用“IFly.super.move();”語(yǔ)句調(diào)用
IFly
接口的默認(rèn)方法,或者使用“ISwim.super.move();”語(yǔ)句調(diào)用
ISwim
接口的默認(rèn)方法。函數(shù)式接口定義
函數(shù)式接口(functionalinterface)是Java8引入的一項(xiàng)重要特性,它是指僅包含一個(gè)抽象方法的接口(可以有多個(gè)默認(rèn)方法或靜態(tài)方法),可以描述單一功能。核心作用函數(shù)式接口主要用于Java的函數(shù)式編程,通常使用Lambda表達(dá)式和方法引用實(shí)現(xiàn)函數(shù)式接口。1.定義函數(shù)式接口
函數(shù)式接口可以通過(guò)@FunctionalInterface注解顯式聲明,這個(gè)注解不是強(qiáng)制性的,但可以幫助編譯器檢查接口是否只包含一個(gè)抽象方法,避免意外添加多個(gè)抽象方法。示例@FunctionalInterface //使用注解聲明函數(shù)式接口publicinterfaceICalculator{ //定義函數(shù)式接口intcalculate(inta,intb); //聲明一個(gè)抽象方法}上述代碼中,ICalculator是一個(gè)函數(shù)式接口,它只包含一個(gè)抽象方法calculate()。(1)Supplier<T>常用的函數(shù)式接口(3)BiFunction<T,U,R>(2)Function<T,R>
抽象方法為
Tget(),不接收參數(shù),返回
T
類型數(shù)據(jù),T
可以是Java支持的任意引用類型。抽象方法為Rapply(Tt),接收一個(gè)參數(shù)t,返回R類型數(shù)據(jù),T和R可以是Java支持的任意引用類型。抽象方法為Rapply(Tt,Uu),接收兩個(gè)參數(shù)t和u,返回R類型數(shù)據(jù),T、U和R可以是Java支持的任意引用類型。編寫(xiě)程序在編寫(xiě)程序時(shí),有時(shí)會(huì)遇到算法和運(yùn)算邏輯一樣,但要求在不同的場(chǎng)合操作不同數(shù)據(jù)類型對(duì)象的情況,此時(shí)可以使用泛型。泛型的核心是參數(shù)化類型,它支持在類、接口和方法的聲明中使用類型形參,通過(guò)類型形參在創(chuàng)建對(duì)象、調(diào)用方法時(shí)指定參數(shù)的數(shù)據(jù)類型。上述內(nèi)置的函數(shù)式接口都是泛型接口,使用接口時(shí)將
T、U
和
R
設(shè)置為需要的引用數(shù)據(jù)類型,如Supplier<String>。2.使用Lambda表達(dá)式實(shí)現(xiàn)函數(shù)式接口Lambda
表達(dá)式是
Java8
引入的另一項(xiàng)重要特性,它極大地簡(jiǎn)化了函數(shù)式接口的實(shí)現(xiàn)方式,使代碼更加簡(jiǎn)潔和易讀。Lambda
表達(dá)式是一種匿名函數(shù),它可以作為參數(shù)傳遞給方法或賦值給函數(shù)式接口類型的變量。語(yǔ)法格式([形參列表])->{方法體}其中,形參列表的每個(gè)形參以“數(shù)據(jù)類型
參數(shù)”的形式聲明,數(shù)據(jù)類型可以省略,多個(gè)形參之間用英文逗號(hào)隔開(kāi),當(dāng)只有一個(gè)參數(shù)時(shí),圓括號(hào)可以省略;方法體也稱Lambda
表達(dá)式的主體,可以是一條語(yǔ)句或多條語(yǔ)句,當(dāng)只有一條語(yǔ)句時(shí),大括號(hào)可以省略。【運(yùn)行結(jié)果】實(shí)例:4-10使用Lambda表達(dá)式實(shí)現(xiàn)函數(shù)式接口【參考代碼】/*LambdaExample.java*/packageproject4.example4_10;@FunctionalInterface //使用注解聲明函數(shù)式接口……(詳見(jiàn)教材)
3.使用方法引用實(shí)現(xiàn)函數(shù)式接口
方法引用(methodreferences)也是
Java8
引入的一項(xiàng)重要特性,它可以直接引用已有方法,是Lambda表達(dá)式的一種簡(jiǎn)潔形式,同樣也是函數(shù)式接口的一種實(shí)現(xiàn)方式。特定對(duì)象實(shí)例方法引用特定類任意對(duì)象實(shí)例方法引用構(gòu)造方法引用靜態(tài)方法引用(1)靜態(tài)方法引用,通過(guò)類名引用類的靜態(tài)方法,語(yǔ)法格式為“類名::靜態(tài)方法名”。實(shí)例:4-11使用
Lambda
表達(dá)式和靜態(tài)方法引用實(shí)
現(xiàn)函數(shù)式接口,求兩個(gè)整數(shù)的較大值。【問(wèn)題分析】
使用
java.util.function
包中的內(nèi)置函數(shù)式接口
BiFunction,無(wú)須顯式定義函數(shù)式接口,引用Math類的靜態(tài)方法max()返回兩個(gè)數(shù)值中的較大值?!具\(yùn)行結(jié)果】【參考代碼】/*StaticMethod.java*/packageproject4.example4_11;importjava.util.function.BiFunction;//導(dǎo)入BiFunction接口publicclassStaticMethod{……(詳見(jiàn)教材)
【結(jié)果說(shuō)明】
結(jié)合例
4-11
的代碼和運(yùn)行結(jié)果可以看出,使用
Lambda
表達(dá)式和靜態(tài)方法引用可以實(shí)現(xiàn)相同的功能,但使用靜態(tài)方法引用的代碼更加簡(jiǎn)潔。
(2)特定對(duì)象實(shí)例方法引用,通過(guò)對(duì)象名
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電線電纜制造工操作規(guī)程競(jìng)賽考核試卷含答案
- 陽(yáng)極爐工崗前基礎(chǔ)安全考核試卷含答案
- 生化藥品制造工崗前崗位適應(yīng)能力考核試卷含答案
- 片劑工安全行為測(cè)試考核試卷含答案
- 美麗鄉(xiāng)村文化建設(shè)
- 承包終止合同協(xié)議
- 德文合同解約協(xié)議
- 弱電合同追加協(xié)議
- 食用菌訂合同范本
- 快遞分揀合同范本
- 泰康投連險(xiǎn)考試題及答案
- 學(xué)堂在線 中國(guó)建筑史-元明清與民居 期末考試答案
- 寺廟托管協(xié)議書(shū)范本
- 雇人擺攤管理方案(3篇)
- 加油站建設(shè)項(xiàng)目社會(huì)穩(wěn)定風(fēng)險(xiǎn)評(píng)估報(bào)告
- 5.1人民代表大會(huì):我國(guó)的國(guó)家權(quán)力機(jī)關(guān)課件-2024-2025學(xué)年高中政治統(tǒng)編版必修三政治與法治
- 牙醫(yī)前臺(tái)面試題及答案
- 國(guó)際貿(mào)易財(cái)務(wù)管理總結(jié)及計(jì)劃
- 學(xué)習(xí)解讀《SLT 631.1水利水電工程單元工程施工質(zhì)量驗(yàn)收標(biāo)準(zhǔn) 第 1 部分:土石方工程》課件
- (高清版)DG∕TJ 08-53-2016 行道樹(shù)栽植技術(shù)規(guī)程
- 國(guó)際貿(mào)易課件:關(guān)稅與貿(mào)易政策
評(píng)論
0/150
提交評(píng)論