




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第三章Java開發(fā)綜合實(shí)戰(zhàn)面向?qū)ο缶幊毯诵募夹g(shù)計(jì)算機(jī)專業(yè)·任務(wù)驅(qū)動(dòng)應(yīng)用型教材01繼承與多態(tài)繼承與多態(tài)實(shí)現(xiàn)繼承子類可以繼承父類原有的屬性和方法,也可以增加自己特有的屬性和方法。例如,正方形是一種特殊的四邊形,正方形類繼承了四邊形類的所有屬性和方法(例如4條邊,4個(gè)角),還增加了一些正方形類特有的屬性和方法(例如4條邊相等,4個(gè)角都為直角)。繼承與多態(tài)實(shí)現(xiàn)繼承在類的聲明中,使用關(guān)鍵字extends聲明一個(gè)類繼承另一個(gè)類,即定義一個(gè)子類,語法格式如下:子類名稱extends父類名稱例如,下面的語句表示正方形類Square(子類)繼承四邊形類Quadrangle(父類):publicclassSquareextendsQuadrangle{//類體Chiftery繼承與多態(tài)實(shí)現(xiàn)繼承一個(gè)類可以有多個(gè)子類,子類又可以作為父類派生其他子類。Java的類按繼承關(guān)系形成樹狀結(jié)構(gòu),根節(jié)點(diǎn)是java.lang.Object類。也就是說,Java的所有類都直接或間接繼承自O(shè)bject類。繼承與多態(tài)方法重寫在一般情況下,父類的成員會(huì)被子類繼承,子類對象在調(diào)用繼承的方法時(shí),調(diào)用的是父類的實(shí)現(xiàn)。如果需要對繼承的方法進(jìn)行不同的實(shí)現(xiàn),則要重寫父類的成員方法。繼承與多態(tài)方法重寫重寫(Override)也稱為覆蓋,是指在子類中定義一個(gè)方法,該方法的名稱和參數(shù)列表與父類的成員方法相同,但修改或重新編寫了實(shí)現(xiàn)內(nèi)容、返回值類型或訪問權(quán)限修飾符。也就是說,在Java中重寫方法必須滿足以下兩個(gè)條件:●子類方法名稱和父類方法名稱相同?!褡宇惙椒ǖ膮?shù)類型、個(gè)數(shù)、順序與父類的成員方法完全相同。繼承與多態(tài)操作隱藏的父類成員如果子類聲明的成員變量與從父類繼承的成員變量同名,或者在子類的方法中定義了與父類成員變量同名的局部變量,子類就會(huì)隱藏所繼承的父類成員變量。如果子類重構(gòu)了父類的成員方法,即子類有與父類方法同名的方法(相同的方法名、參數(shù)列表和返回值類型),則在子類范圍內(nèi),父類方法被隱藏。繼承與多態(tài)操作隱藏的父類成員關(guān)鍵字super有兩個(gè)功能:調(diào)用父類的成員變量和成員方法;調(diào)用父類的構(gòu)造方法。語法格式如下?!駍uper.變量名:調(diào)用父類的成員變量?!駍uper.方法名(參數(shù)列表):調(diào)用父類的成員方法?!駍uper(參數(shù)列表):調(diào)用父類的有參構(gòu)造方法。如果沒有參數(shù),則調(diào)用父類的無參構(gòu)造方法,此時(shí)該語句可以省略。繼承與多態(tài)使用final關(guān)鍵字關(guān)鍵字final表示不可改變,不僅可修飾類,還可修飾類的成員方法和成員變量。語法格式如下:(1)修飾類。(2)修飾類的成員方法。(3)修飾類的成員變量。繼承與多態(tài)使用方法重載實(shí)現(xiàn)多態(tài)方法重載(Overload)是面向?qū)ο缶幊痰亩鄳B(tài)特性的一種表現(xiàn)形式,具體是指在同一個(gè)類中定義多個(gè)名字相同但參數(shù)不同的方法。同一個(gè)方法名是對外的統(tǒng)一接口,參數(shù)列表不同導(dǎo)致內(nèi)部實(shí)現(xiàn)也不同。繼承與多態(tài)使用方法重載實(shí)現(xiàn)多態(tài)在Java中,重載方法必須滿足以下條件:●方法名相同,包括字母大小寫。●方法的參數(shù)列表必須不同,可以是參數(shù)的類型、個(gè)數(shù)或順序不同?!穹椒ǖ姆祷刂殿愋?、修飾符可以相同,也可以不同。繼承與多態(tài)使用方法重載實(shí)現(xiàn)多態(tài)值得一提的是,在重載構(gòu)造方法時(shí),在構(gòu)造方法的第1句中可以使用關(guān)鍵字this調(diào)用本類的其他構(gòu)造方法,語法格式如下:this(參數(shù)列表)繼承與多態(tài)對象向上轉(zhuǎn)型如果一個(gè)類有很多子類,并且這些子類都重寫了父類中的某個(gè)方法,當(dāng)把子類創(chuàng)建的對象的引用放到一個(gè)父類的對象中時(shí),就得到了該對象的一個(gè)向上轉(zhuǎn)型對象。由于不同的子類在重寫父類的方法時(shí)可能產(chǎn)生不同的行為,因此向上轉(zhuǎn)型對象在調(diào)用這個(gè)方法時(shí)就具有多種形態(tài)。02抽象類與接口抽象類與接口抽象類與抽象方法Java使用關(guān)鍵字abstract修飾抽象類。抽象類在繼承體系中常位于頂層,不能被實(shí)例化。在抽象類中使用關(guān)鍵字abstract修飾的方法稱為抽象方法。語法格式如下:抽象類與接口抽象類與抽象方法抽象類中可以包含成員變量、構(gòu)造方法、抽象方法和具體方法中的全部項(xiàng)或部分項(xiàng)。讀者需要注意的是,抽象方法在方法頭結(jié)尾處直接以分號(hào)結(jié)束,沒有方法體,也沒有定義方法體的一對花括號(hào)公。通常用于描述方法具有的功能,而不提供具體功能的實(shí)現(xiàn)。而對于具體方法來說,即使方法體為空,花括號(hào)目也不能省略。抽象類與接口聲明與實(shí)現(xiàn)接口如果一個(gè)抽象類中的所有方法都是抽象方法,就可以使用接口來定義這個(gè)類。接口是一系列抽象方法的聲明集合,是一個(gè)完全抽象的類,沒有方法的實(shí)現(xiàn),具體實(shí)現(xiàn)由實(shí)現(xiàn)接口的類確定。因此這些方法可以在不同的地方被不同的類實(shí)現(xiàn),從而表現(xiàn)出不同的行為(功能)。抽象類與接口聲明與實(shí)現(xiàn)接口接口的訪問權(quán)限可選值為public,如果被省略,則使用默認(rèn)的訪問權(quán)限。接口體中可以定義成員變量和成員方法,由于變量默認(rèn)均為publicstaticfinal類型,即靜態(tài)常量,因此必須顯式地對其進(jìn)行初始化。接口中的方法默認(rèn)都是publicabstract類型的抽象方法。抽象類與接口聲明與實(shí)現(xiàn)接口接口是建立類與類之間的協(xié)議的一種形式,沒有具體實(shí)現(xiàn),在使用前需要先定義一個(gè)類,使用關(guān)鍵字implements表明該類實(shí)現(xiàn)某個(gè)或某些接口,語法格式如下:抽象類與接口聲明與實(shí)現(xiàn)接口Java使用關(guān)鍵字interface聲明接口,語法格式如下:抽象類與接口聲明與實(shí)現(xiàn)接口類實(shí)現(xiàn)接口實(shí)質(zhì)上是一種繼承,一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,從而能實(shí)現(xiàn)多重繼承,語法格式如下:03內(nèi)部類內(nèi)部類成員內(nèi)部類所謂成員內(nèi)部類,就是被定義在一個(gè)類內(nèi)部,作為類的成員的類。定義成員內(nèi)部類的語法格式如下:內(nèi)部類成員內(nèi)部類其中,OuterClass類是外部類,InnerClass類是內(nèi)部類。成員內(nèi)部類可使用static、public、protected和private修飾,而外部類只能使用public或默認(rèn)修飾符修飾。需要注意的是,在成員內(nèi)部類中不能定義靜態(tài)變量。內(nèi)部類成員內(nèi)部類與創(chuàng)建普通的類對象相同,成員內(nèi)部類對象也使用關(guān)鍵字new創(chuàng)建;與普通類不同的是,成員內(nèi)部類的對象實(shí)例化操作必須在外部類或外部類的非靜態(tài)方法中實(shí)現(xiàn)。如果在外部類中初始化一個(gè)成員內(nèi)部類對象,成員內(nèi)部類對象就會(huì)被綁定在外部類對象上。內(nèi)部類成員內(nèi)部類如果要在外部類和非靜態(tài)方法之外直接實(shí)例化成員內(nèi)部類對象,可以采用以下語法格式:外部類.內(nèi)部類內(nèi)部類對象=new外部類().new內(nèi)部類();內(nèi)部類成員內(nèi)部類從上面的語法格式中可以看到,當(dāng)直接實(shí)例化成員內(nèi)部類對象時(shí),必須首先獲取相應(yīng)的外部類對象,然后利用外部類對象進(jìn)行成員內(nèi)部類對象的實(shí)例化操作。成員內(nèi)部類一旦編譯成功,就會(huì)成為和相應(yīng)的外部類完全不同的兩個(gè)類。內(nèi)部類局部內(nèi)部類如果內(nèi)部類被定義在一個(gè)類的方法或者一個(gè)作用域中,則被稱為局部內(nèi)部類。與成員內(nèi)部類的區(qū)別在于,局部內(nèi)部類可看作方法中的一個(gè)局部變量,因此不能有public、protected、private及static修飾符,其訪問權(quán)限也僅限于方法內(nèi)或者該作用域內(nèi)。內(nèi)部類局部內(nèi)部類內(nèi)部類匿名內(nèi)部類匿名內(nèi)部類是在接口和抽象類的應(yīng)用上發(fā)展起來的。所謂匿名內(nèi)部類,就是沒有具體名稱的內(nèi)部類,通常用于將類體非常小(只有簡單幾行),并且只需要使用一次的類作為參數(shù)傳遞給方法,以實(shí)現(xiàn)一個(gè)接口或繼承一個(gè)類。在Swing編程中,經(jīng)常使用這種方式綁定事件,編寫事件監(jiān)聽的代碼,不僅方便,而且代碼容易維護(hù)。內(nèi)部類匿名內(nèi)部類在Java中創(chuàng)建匿名內(nèi)部類的語法格式如下:內(nèi)部類匿名內(nèi)部類由于類的構(gòu)造方法名稱必須與類名相同,而匿名內(nèi)部類沒有類名,因此匿名內(nèi)部類沒有構(gòu)造方法,使用范圍非常有限。一般來說,匿名內(nèi)部類用于繼承其他類或?qū)崿F(xiàn)接口,只是對繼承方法的實(shí)現(xiàn)或重寫,并不需要增加額外的方法。內(nèi)部類Lambda表達(dá)式Lambda表達(dá)式是指應(yīng)用在SAM(SingleAbstractMethod,含有一個(gè)抽象方法的接口)環(huán)境下的一種簡化定義形式,用于簡化匿名內(nèi)部類的定義結(jié)構(gòu)。在Java中,Lambda表達(dá)式的基本語法格式如下://定義方法體(參數(shù),參數(shù),…)->{方法體);(參數(shù),參數(shù),…)->語句;//直接返回結(jié)果內(nèi)部類Lambda表達(dá)式本案例首先從Console窗格中獲取要進(jìn)行加法運(yùn)算的兩個(gè)整數(shù),然后利用Lambda表達(dá)式輸出這兩個(gè)整數(shù)的計(jì)算結(jié)果。通過本案例演示Lambda表達(dá)式的使用方法。內(nèi)部類Lambda表達(dá)式(1)在Java項(xiàng)目InnerClass中定義一個(gè)接口LambdaExpression,聲明一個(gè)抽象方法compute()。具體代碼如
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 修建贊助合同范本
- 勞務(wù)時(shí)間合同范本
- 內(nèi)外架合同范例
- 化肥合作合同范例
- 專項(xiàng)經(jīng)理聘用合同范本
- 農(nóng)業(yè)購貨合同范本
- 化工產(chǎn)品購銷服務(wù)合同范本
- 醫(yī)院購銷合同范本
- 出口布料銷售合同范例
- 養(yǎng)殖水車出租合同范例
- DB34∕T 3247-2018 井采煤礦綠色礦山建設(shè)要求
- 2024至2030年中國小模數(shù)齒輪市場調(diào)查與行業(yè)前景預(yù)測專題研究報(bào)告
- DB32T-公路橋梁水下結(jié)構(gòu)檢測評(píng)定標(biāo)準(zhǔn)
- 小學(xué)語文教師讀書筆記范文(5篇)
- 2023年部編人教版六年級(jí)道德與法治下冊全冊課件【全套】
- 《茉莉花》(課件)人音版音樂六年級(jí)上冊
- 肌肉注射的常見并發(fā)癥及預(yù)防處理措施
- 景觀模型設(shè)計(jì)與制作:第7章 建筑模型制作基本技法
- 關(guān)愛婦女防治兩癌講座課件
- DL∕T 584-2017 3kV~110kV電網(wǎng)繼電保護(hù)裝置運(yùn)行整定規(guī)程
- (正式版)FZ∕T 80018-2024 服裝 防靜電性能要求及試驗(yàn)方法
評(píng)論
0/150
提交評(píng)論