




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第4章類的多態(tài)掌握多態(tài)的優(yōu)勢(shì)和應(yīng)用場(chǎng)合掌握父類和子類之間的類型轉(zhuǎn)換掌握instanceof運(yùn)算符的使用使用父類作為方法形參實(shí)現(xiàn)多態(tài)本章目標(biāo)為什么使用多態(tài)5-1寵物生病了,需要主人給寵物看病不同寵物看病過程不一樣不同寵物恢復(fù)后體力值不一樣
打針
吃藥
吃藥
療養(yǎng)狗狗Q仔為什么使用多態(tài)5-2編寫主人類編寫給狗狗看病的方法編寫給Q仔看病的方法編寫測(cè)試方法調(diào)用主人類給狗狗看病的方法調(diào)用主人類給Q仔看病的方法為什么使用多態(tài)5-3編碼實(shí)現(xiàn)publicclassMaster{publicvoidCure(Dogdog){if(dog.getHealth()<50){dog.setHealth(60);System.out.println("打針、吃藥");
}
}
publicvoidCure(Penguinpenguin){
if(penguin.getHealth()<50)
penguin.setHealth(70);
System.out.println("吃藥、療養(yǎng)");
}}
主人類……Mastermaster=newMaster();master.Cure(dog);master.Cure(penguin);……測(cè)試方法為什么使用多態(tài)5-4如果又需要給XXX看病,怎么辦?添加XXX類,繼承Pet類修改Master類,添加給XXX看病的方法使用多態(tài)優(yōu)化設(shè)計(jì)頻繁修改代碼,代碼可擴(kuò)展性、可維護(hù)性差為什么使用多態(tài)5-5使用多態(tài)優(yōu)化后的代碼……Petpet=newDog();Mastermaster=newMaster();master.Cure(pet);……測(cè)試方法publicclassDogextendsPet{publicvoidtoHospital(){this.setHealth(60);System.out.println("打針、吃藥");
}}publicclassPenguinextendsPet{publicvoidtoHospital(){this.setHealth(70);System.out.println("吃藥、療養(yǎng)");
}}publicclassMaster{publicvoidCure(Petpet){if(pet.getHealth()<50)pet.toHospital();}}主人類Dog類Penguin類1234又要給XXX看病時(shí),只需:1.編寫XXX類繼承Pet類(舊方案也需要)2.創(chuàng)建XXX類對(duì)象(舊方案也需要)3.其他代碼不變(不用修改Master類)什么是多態(tài)生活中的多態(tài)你能列舉出一個(gè)多態(tài)的生活示例嗎?程序中的多態(tài)多態(tài):同一個(gè)引用類型,使用不同的實(shí)例而執(zhí)行不同操作父類引用,子類對(duì)象同一種事物,由于條件不同,產(chǎn)生的結(jié)果也不同如何實(shí)現(xiàn)多態(tài)3-1用多態(tài)實(shí)現(xiàn)打印機(jī)分為黑白打印機(jī)和彩色打印機(jī)不同類型的打印機(jī)打印效果不同黑白打印機(jī)彩色打印機(jī)打印如何實(shí)現(xiàn)多態(tài)3-2使用多態(tài)實(shí)現(xiàn)思路編寫父類編寫子類,子類重寫父類方法運(yùn)行時(shí),使用父類的類型,子類的對(duì)象計(jì)算機(jī)可以連接各種打印機(jī)無論連接何種打印機(jī)打印方法都相同根據(jù)連接打印機(jī)不同,效果也不同如何實(shí)現(xiàn)多態(tài)3-3編碼實(shí)現(xiàn)實(shí)現(xiàn)多態(tài)的兩個(gè)要素:1.方法重寫2.使用父類類型abstractclassPrinter(){
print(Stringstr);}classColorPrinterextendsPrinter(){
print(Stringstr){System.out.println("輸出彩色的"+str);}}classBlackPrinterextendsPrinter(){
print(Stringstr){System.out.println("輸出黑白的"+str);}}publicstaticvoidmain(String[]args){
Printerp=newColorPrinter();p.print();p=newBlackPrinter();p.print();}父類子類運(yùn)行同一種操作方式,不同的操作對(duì)象只能調(diào)用父類已經(jīng)定義的方法方法重寫方法重寫的規(guī)則在繼承關(guān)系的子類中重寫的方法名、參數(shù)、返回值類型必須與父類相同私有方法不能繼承因而也無法重寫
位置方法名參數(shù)表返回值訪問修飾符方法重寫子類相同相同相同不能比父類更嚴(yán)格方法重載同類相同不相同無關(guān)無關(guān)方法重寫方法重載VSinstanceof運(yùn)算符該運(yùn)算符用來判斷一個(gè)對(duì)象是否屬于一個(gè)類或者實(shí)現(xiàn)了一個(gè)接口,結(jié)果為true或false在強(qiáng)制類型轉(zhuǎn)換之前通過instanceof運(yùn)算符檢查對(duì)象的真實(shí)類型,可以避免類型轉(zhuǎn)換異常,從而提高代碼健壯性對(duì)象instanceof
類或接口/***測(cè)試instanceof運(yùn)算符的使用。*@author北大青鳥*/publicclassTestPoly2{publicstaticvoidmain(String[]args){Petpet=newPenguin("楠楠","Q妹");
//Petpet=newDog("歐歐","雪娜瑞");
pet.eat();
if(petinstanceofDog){
Dogdog=(Dog)pet;
dog.catchingFlyDisc();
}elseif(petinstanceofPenguin){
Penguinpgn=(Penguin)pet;
pgn.swimming();
}
}}publicclassTestPoly2{publicstaticvoidmain(String[]args){//Petpet=newPenguin("楠楠","Q妹");
Petpet=newDog("歐歐","雪娜瑞");
pet.eat();
if(petinstanceofDog){Dogdog=(Dog)pet;dog.catchingFlyDisc();}elseif(petinstanceofPenguin){Penguinpgn=(Penguin)pet;pgn.swimming();}}}指導(dǎo)——實(shí)現(xiàn)喂養(yǎng)寵物功能2-1訓(xùn)練要點(diǎn):子類到父類的自動(dòng)類型轉(zhuǎn)換使用父類作為方法形參實(shí)現(xiàn)多態(tài)多態(tài)可以減少代碼量,可以提高代碼的可擴(kuò)展性和可維護(hù)性需求說明:實(shí)現(xiàn)喂養(yǎng)寵物功能不同寵物吃的東西不同主人可以喂養(yǎng)不同類型寵物講解需求說明指導(dǎo)——實(shí)現(xiàn)喂養(yǎng)寵物功能2-2實(shí)現(xiàn)思路:在Pet類添加吃飯的抽象方法子類實(shí)現(xiàn)吃飯方法Master類編寫喂養(yǎng)方法,使用Pet類型作為參數(shù)運(yùn)行時(shí),調(diào)用喂養(yǎng)方法時(shí),傳遞一個(gè)子類的對(duì)象publicclassPet{protectedabstractvoideat();}publicPetfeed(Petpet){pet.eat();}publicclassDogextendsPet{publicvoideat(){super.health=super.health+3;}}Pet類Dog類Master類完成時(shí)間:25分鐘練習(xí)——實(shí)現(xiàn)與寵物玩耍功能需求說明:主人和狗狗玩接飛盤游戲,狗狗健康值減少10,與主人親密度增加5主人和企鵝玩游泳游戲,企鵝健康值減少10,與主人親密度增加5提示:Dog類添加catchingFlyDisc()方法,實(shí)現(xiàn)接飛盤功能Penguin類添加swimming()方法,實(shí)現(xiàn)游泳功能主人添加play(Petpet)方法如果pet代表Dog就玩接飛盤游戲如果pet代表Penguin就玩游泳游戲完成時(shí)間:25分鐘小結(jié)什么是多態(tài)?使用的多態(tài)有什么好處?指導(dǎo)——計(jì)算總租金2-1訓(xùn)練要點(diǎn):多態(tài)的使用使用父類類型作為方法參數(shù)需求說明:在前面汽車租賃系統(tǒng)的基礎(chǔ)上,實(shí)現(xiàn)計(jì)算多種車輛總租金的功能現(xiàn)在有客戶租用:2輛寶馬1輛別克商務(wù)艙1輛金龍(34)座租5天共多少租金?講解需求說明指導(dǎo)——計(jì)算總租金2-2實(shí)現(xiàn)思路:完成時(shí)間:35分鐘MotoVehile[]motos=newMotoVehile[4];motos[0]=newCar("寶馬550i","京NY28588");motos[1]=newCar("寶馬550i","京NNN328");motos[2]=newCar("別克林蔭大道","京NY28588");motos[3]=newBus("金龍",34);1、創(chuàng)建車的對(duì)象,放在數(shù)組中CalcTotalRent(MotoVehile[]motos){doubletotalRent=0.0D;for(inti=0;i<motos.length;++i){totalRent+=motos[i].CalRent(5);}returntotalRent;}2、循環(huán)調(diào)用CalcRent方法,計(jì)算總租金小結(jié)為什么可以實(shí)現(xiàn)這樣的效果?再次理解什么是多態(tài)?再次理解多態(tài)有什么好處?指導(dǎo)——購置
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 1.3 絕對(duì)值與相反數(shù)新教材七年級(jí)數(shù)學(xué)上冊(cè)同步教學(xué)設(shè)計(jì)(冀教版2024)河北專版
- 勞動(dòng)項(xiàng)目八 清理廚房教學(xué)設(shè)計(jì)小學(xué)勞動(dòng)四年級(jí)下冊(cè)人教版《勞動(dòng)教育》
- 2025年保密知識(shí)教育線上培訓(xùn)題庫和答案
- 活動(dòng)1 設(shè)計(jì)同學(xué)紀(jì)念冊(cè)內(nèi)容并收集素材教學(xué)設(shè)計(jì)-2025-2026學(xué)年小學(xué)信息技術(shù)(信息科技)五年級(jí)上冊(cè)黔科版
- 2025年濟(jì)南護(hù)理編制考試題庫及答案
- 2025年護(hù)理綜合必考簡答題題庫及答案
- DB52-T 1828-2024 森林康養(yǎng)步道建設(shè)規(guī)范
- 第四課 民族區(qū)域自治地方的發(fā)展教學(xué)設(shè)計(jì)初中歷史與社會(huì)(人文地理)九年級(jí)下冊(cè)人教版(新課程標(biāo)準(zhǔn))
- Unit 6 Topic 2 Section A 教學(xué)設(shè)計(jì) 仁愛科普版九年級(jí)英語下冊(cè)
- 2025年區(qū)塊鏈技術(shù)在公益基金中的應(yīng)用
- 遼寧2025自考生物醫(yī)藥數(shù)據(jù)科學(xué)生物信息學(xué)選擇題專練
- 2025內(nèi)蒙古鄂爾多斯市國源礦業(yè)開發(fā)有限公司招聘75人備考考試題庫附答案解析
- 2025年專升本政治試題真題及答案
- 幽門螺桿菌課件
- 元代文學(xué)-課件
- 水利法規(guī)基礎(chǔ)知識(shí)培訓(xùn)課件
- 包裝材質(zhì)基礎(chǔ)知識(shí)培訓(xùn)課件
- 2025至2030中國生產(chǎn)監(jiān)控行業(yè)項(xiàng)目調(diào)研及市場(chǎng)前景預(yù)測(cè)評(píng)估報(bào)告
- 極地安全教學(xué)課件
- 消費(fèi)者的注意
- 《安娜·卡列尼娜》-課件-
評(píng)論
0/150
提交評(píng)論