




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第6
章繼承與多態(tài)上一章回顧類的封裝特性字段的定義與使用方法的定義與使用訪問修飾符詳解介紹2本章節(jié)授課目標(biāo)類的繼承、多態(tài)特性類的繼承多態(tài)abstract修飾符final修飾符34面向?qū)ο蟪绦蛟O(shè)計(jì)思想繼承性的體現(xiàn)面向?qū)ο蟪绦蛟O(shè)計(jì)思想繼承性思想充分利用已有代碼的基礎(chǔ)上,通過派生出新的子類去添加新的特性。類技術(shù)在定義類時(shí),通過指定繼承自某一個父類,來獲得該父類所特有的程序功能。俗語:龍生龍、鳳生鳳、老鼠的孩子會打洞如已經(jīng)有一個處理發(fā)送短信的類,現(xiàn)在你想增加發(fā)送彩信的能力。你沒有辦法直接修改該類代碼的情況下,可以通過繼承與派生技術(shù)來定義一個新類,這樣新類同樣具備發(fā)短信的能力,你還可以隨意增加發(fā)彩信的功能。5如何定義繼承關(guān)系?extends關(guān)鍵字回憶定義類時(shí)的語法結(jié)構(gòu)[修飾符]class類名[extends父類][implements接口]{}classDemoClass1extendsSuperClass{}6一些術(shù)語子類Child就是子類。繼承Child類繼承自Father類。派生Father類派生出Child類。父類(超類)Father是父類。爺爺類等祖先類都屬于超類。classChildextendsFather{}7繼承特性示例B類繼承自A類,注意結(jié)合訪問權(quán)限修飾符知識分析代碼。8繼承與構(gòu)造函數(shù)有繼承關(guān)系發(fā)生時(shí),在執(zhí)行子類的構(gòu)造函數(shù)時(shí)會優(yōu)先觸發(fā)執(zhí)行父類的構(gòu)造函數(shù)。如果直接父類有多個構(gòu)造函數(shù)時(shí),可以通過super關(guān)鍵字確定要觸發(fā)執(zhí)行父類的哪一個構(gòu)造函數(shù)。9繼承與構(gòu)造函數(shù)父類的構(gòu)造函數(shù)會優(yōu)先被執(zhí)行示例:10繼承與構(gòu)造函數(shù)super關(guān)鍵字super關(guān)鍵字代表父類實(shí)例,可以在除了靜態(tài)方法以外隨時(shí)使用super訪問父類實(shí)例。classBaseClass{BaseClass(inti){}}classChildClassextendsBaseClass{ChildClass(intj){super(j);}}11繼承與構(gòu)造函數(shù)super關(guān)鍵字的使用問題使用super去調(diào)用父類的構(gòu)造函數(shù)時(shí),同樣遵循在構(gòu)造函數(shù)中調(diào)用其它構(gòu)造函數(shù)需要寫在函數(shù)體最前部的要求。classBaseClass{BaseClass(inti){}}classChildClassextendsBaseClass{ChildClass(intj){System.out.println(“test”);super(j);}}錯誤:應(yīng)該把super寫在函數(shù)體的最前面。12繼承與變量定義因?yàn)槔^承可以使子類具備父類的程序特性,因此可以使用父類定義變量,然后實(shí)例化子類去使用。classBaseClass{}classChildClassextendsBaseClass{}publicstaticvoidmain(String[]args){
BaseClassc=newChildClass();}13小結(jié)有問題嗎?1415面向?qū)ο蟪绦蛟O(shè)計(jì)思想多態(tài)性的體現(xiàn)類的子類表現(xiàn)出的行為可以各不相同,這種特性稱為類的多態(tài)性。交通工具都具備移動的能力和行為,但是不同的子類表現(xiàn)方式可以各不相同。交通工具飛機(jī)類火車類船類16多態(tài)性與類技術(shù)多態(tài)性的具體體現(xiàn)方法重寫父類定義方法,子類可以“重寫”父類方法來表現(xiàn)出不同的行為。父類可以定義抽象方法(類似于一種約定,沒有方法體),交給不同的子類去實(shí)現(xiàn)出不同的實(shí)現(xiàn)代碼。方法重載調(diào)用類的方法時(shí),可以根據(jù)以前講過的方法重載自動匹配最合適的方法去執(zhí)行,看上去類的某個方法會很據(jù)不同的參數(shù)執(zhí)行不同的代碼一樣。17多態(tài)性示例方法重寫、方法覆蓋(override)子類定義的方法和超類完全相同時(shí)(名稱、參數(shù)、返回值)稱為子類重寫了父類的方法。publicclassBase1{publicvoidsayHello(Stringname){System.out.println(“hello:”+name);}}publicclassChild1extendsBase1{publicvoidsayHello(Stringname){System.out.println(“你好:”+name);}}18override規(guī)則方法重寫的規(guī)則:1.返回值如果是原始類型的話,則子類必須與父類方法的返回值類型相同。2.返回值類型如果是引用類型的,子類的返回值類型可以是父類方法返回值的子類,即向下兼容。3.訪問權(quán)限修飾符子類可以擴(kuò)大父類的訪問權(quán)限,即子類的重寫方法時(shí)可以放大父類方法的訪問權(quán)限而不能縮小。4.子類可以去除父類方法的某些修飾符,如abstract,也可以添加新的修飾符,如finaloverride知識點(diǎn)方法重寫相關(guān)知識點(diǎn)子類可以通過override技術(shù)來“改變”父類的行為。子類可以通過super.oldmethod的方式訪問到父類被重寫的方法。父類定義變量子類負(fù)責(zé)創(chuàng)建類實(shí)例,如果有方法重寫則會調(diào)用子類的方法。publicclassChild1extendsBase1{….publicvoidsayHelloOld(Stringname){super.sayHello(name);}….}20屬性重寫、屬性覆蓋原則:誰定義的變量就取誰的屬性值,示例:publicclassBase1{intage=40;}publicclassChild1extendsBase1{intage=10;}Base1obj=newChild1();System.out.println(obj.age);//輸出40屬性重寫比較少用,無需過多關(guān)注多態(tài)性的另一個種形式:方法重載publicclassChineseextendshuman{publicvoidsayHello(Stringhanzu){//向漢族人打招呼的方法}publicvoidsayHello(booleanisXinJiangRen){//向新疆人打招呼的方法}}22一些與多態(tài)性有關(guān)的術(shù)語知識:向上轉(zhuǎn)型子類實(shí)例可以轉(zhuǎn)型為父類實(shí)例使用,執(zhí)行的是子類的方法。向下轉(zhuǎn)型子類實(shí)例轉(zhuǎn)型為父類實(shí)例后可以再轉(zhuǎn)回到子類實(shí)例使用。父類實(shí)例不可能轉(zhuǎn)型為子類實(shí)例使用。六小齡童與他的父親六齡童23小結(jié)有問題嗎?2425abstract修飾符抽象的概念抽象是從眾多的事物中抽取出共同的、本質(zhì)性的特征,而舍棄其非本質(zhì)的特征。26abstract修飾符可以使用abstract定義抽象類抽象類一般用于派生子類,抽象類無法實(shí)例化。可以使用abstract定義抽象方法抽象方法不含方法體,用于將來被子類重寫。27抽象類定義定義抽象類示例:abstractclass類名{}publicabstractclassFather{inti;}28抽象類特點(diǎn)無法實(shí)例化抽象類。抽象類并不要求必須包含抽象方法。抽象類可以包含構(gòu)造方法。抽象類的父類可以是任何類型。抽象類可以實(shí)現(xiàn)接口方法。29抽象方法定義定義抽象方法抽象方法特點(diǎn)必須定義在抽象類中沒有方法體。不能是private的不能是static的不能是final的abstract[public/protected]返回值方法名([參數(shù)]);30抽象方法抽象方法所在類派生出來的第一個非抽象子類必須實(shí)現(xiàn)全部抽象方法。非抽象子類實(shí)現(xiàn)抽象方法時(shí)遵循方法重寫的原則。抽象方法所在類的派生類還是抽象類時(shí)無需實(shí)現(xiàn)抽象方法。publicabstractclassa{publicabstractvoida();}publicabstractclassbextendsa{publicabstractvoidb();}publicclassdextendsb{publicvoida(){}publicvoidb(){}}不要求必須實(shí)現(xiàn)父類中定義的抽象方法必須實(shí)現(xiàn)31final修飾符32Final修飾符final修飾符修飾的類不允許被繼承final修飾符修飾的方法不允許被重寫final修飾符修飾的變量只能賦值一次,以后只能讀取變量值33final類示例如果需要定義不再允許被繼承使用的類,可以使用final進(jìn)行定義。finalclass類名{}publicfinalclassA{}publicclassBextendsA{}錯誤34Final方法示例被final修飾符修飾的方法不允許被子類重寫publicclassFinalMethodDemo{publicfinalvoidsayHello(){System.out.println(“啟奧歡迎你!”);}}publicclassChildClassextendsFinalMethodDemo{publicvoidsayHello(){System.out.println(“hello!”);}}錯誤35Final變量示例被fina
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 臨時(shí)勞工合同范本
- 與企業(yè)有關(guān)合同范本文檔
- 書籍委托銷售合同范本
- 2024年溫州市自來水有限公司招聘考試真題
- 2024年天津市中西醫(yī)結(jié)合醫(yī)院(天津市南開醫(yī)院)招聘考試真題
- 加油站公司合同范本
- 2024年廈門市集美區(qū)杏?xùn)|中學(xué)教師招聘考試真題
- 2024年溫州文成農(nóng)商銀行招聘筆試真題
- 鳳崗酒店蔬菜配送合同范本
- 2024年六安霍邱聯(lián)合村鎮(zhèn)銀行招聘考試真題
- 短視頻居間代理合同范本
- 二零二五年度港口碼頭安全承包服務(wù)協(xié)議4篇
- 2024年蘇州衛(wèi)生職業(yè)技術(shù)學(xué)院高職單招語文歷年參考題庫含答案解析
- 《歡樂運(yùn)動會:1 我為班級出把力》說課稿-2024-2025學(xué)年四年級上冊綜合實(shí)踐活動滬科黔科版
- 2024年汽車駕駛員(高級)證考試題庫附答案
- 2025年中智集團(tuán)及下屬單位招聘筆試參考題庫含答案解析
- 廣東2025年高中化學(xué)學(xué)業(yè)水平考試模擬試卷試題(含答案詳解)
- 2024年中國牛排2市場調(diào)查研究報(bào)告
- 2025年事業(yè)單位考試(綜合管理類A類)綜合應(yīng)用能力試題及解答參考
- 科創(chuàng)板知識題庫試題及答案
- UL1450標(biāo)準(zhǔn)中文版-2019電動空氣壓縮機(jī)真空泵和涂裝設(shè)備中文版第四版
評論
0/150
提交評論