![Java程序設(shè)計(jì)-多態(tài)與接口_第1頁](http://file4.renrendoc.com/view/b619cc11680a9b978c60794d41d0102b/b619cc11680a9b978c60794d41d0102b1.gif)
![Java程序設(shè)計(jì)-多態(tài)與接口_第2頁](http://file4.renrendoc.com/view/b619cc11680a9b978c60794d41d0102b/b619cc11680a9b978c60794d41d0102b2.gif)
![Java程序設(shè)計(jì)-多態(tài)與接口_第3頁](http://file4.renrendoc.com/view/b619cc11680a9b978c60794d41d0102b/b619cc11680a9b978c60794d41d0102b3.gif)
![Java程序設(shè)計(jì)-多態(tài)與接口_第4頁](http://file4.renrendoc.com/view/b619cc11680a9b978c60794d41d0102b/b619cc11680a9b978c60794d41d0102b4.gif)
![Java程序設(shè)計(jì)-多態(tài)與接口_第5頁](http://file4.renrendoc.com/view/b619cc11680a9b978c60794d41d0102b/b619cc11680a9b978c60794d41d0102b5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
,.Java程序設(shè)計(jì)實(shí)驗(yàn)四:繼承、多態(tài)與接口提交期限和方法期限:第12周周五(2015-11-27)23:59pm謝謝閱讀方法:由學(xué)習(xí)委員收集所有學(xué)生的實(shí)驗(yàn)報(bào)告,以電子檔的形式提交給任課教師(發(fā)郵箱:精品文檔放心下載9867941@)。實(shí)驗(yàn)?zāi)康募耙笳莆認(rèn)ava的基本數(shù)據(jù)類型、運(yùn)算符、表達(dá)式和語句。精品文檔放心下載運(yùn)行環(huán)境:JDK1.7開發(fā)環(huán)境:Eclipse實(shí)驗(yàn)內(nèi)容及題目3.1子類的繼承與方法的重寫【題1中國人與美國人】在Eclipse中創(chuàng)建名為Lab4的新項(xiàng)目,編寫程序模擬中國人、美國人、北京人。除主類外,程序中有4個(gè)類:People、ChinaPeople、AmericanPeople精品文檔放心下載BeijingPeople類。要求如下:(1)People類有權(quán)限是protected的double型成員變量:height和weight,以及publicvoidspeakHello()、publicvoidaverageHeight()和publicvoidaverageWeight()方法。感謝閱讀(2)ChinaPeople類是People類的子類,新增了publicvoidchinaGongfu()方法。要求ChinaPeople重寫父類的publicvoidspeakHello()、publicvoidaverageHeight()和publicvoidaverageWeight()方法。精品文檔放心下載(3)AmericanPeople類是People的子類,新增publicvoidamericanBoxing()方法。要求AmericanPeople重寫父類的publicvoidspeakHello()、publicvoidaverageHeight()和publicvoidaverageWeight()方法。精品文檔放心下載(4)BeijingPeople類是ChinaPeople的子類,新增publicvoidbeijingOpera()方法。要求BeijingPeople重寫父類的publicvoidspeakHello()、publicvoidaverageHeight()和publicvoidaverageWeight()方法。精品文檔放心下載運(yùn)行效果如下圖。按下列代碼模板要求,將【代碼】部分替換為Java程序代碼。感謝閱讀,.部分代碼已給出://People.javapublicclassPeople{protecteddoubleweight,height;謝謝閱讀publicvoidspeakHello(){System.out.println("yayayaya");感謝閱讀}publicvoidaverageHeight()精品文檔放心下載{height=173;System.out.println("averageheight:"+height);感謝閱讀}publicvoidaverageWeight()感謝閱讀{weight=70;System.out.println("averageweight:"+weight);感謝閱讀}}//ChinaPeople.javapublicclassChinaPeopleextendsPeople謝謝閱讀{publicvoidspeakHello(){System.out.println("您好");}publicvoidaverageHeight()感謝閱讀{height=168.78;System.out.println("中國人平均身高:"+height+"厘米");感謝閱讀}//重寫publicvoidaverageWeight()方法,輸出:"中國人平均體重:65公斤"精品文檔放心下載//【代碼1】publicvoidchinaGongfu(){System.out.println("坐如鐘,站如松,睡如弓");感謝閱讀}}//AmericanPeople.javapublicclassAmericanPeopleextendsPeople謝謝閱讀{//重寫publicvoidspeakHello()方法,輸出"Howdoyoudo"感謝閱讀//【代碼2】//重寫publicvoidaverageHeight()方法,輸出"American'saverageheight:176cm"感謝閱讀,.//【代碼3】publicvoidaverageWeight()謝謝閱讀{weight=75;System.out.println("American'saverageweight:"+weight+"kg");謝謝閱讀}publicvoidamericanBoxing()感謝閱讀{System.out.println("直拳、勾拳、組合拳");感謝閱讀}}//BeijingPeople.javapublicclassBeijingPeopleextendsChinaPeople感謝閱讀{//重寫publicvoidaverageHeight()方法,輸出"北京人的平均身高:172.5厘米"謝謝閱讀//【代碼4】//重寫publicvoidaverageWeight()方法,輸出"北京人的平均體重:70公斤"感謝閱讀//【代碼5】publicvoidbeijingOpera()精品文檔放心下載{System.out.println("花臉、青衣、花旦和老生");謝謝閱讀}}//Example.javapublicclassExample{publicstaticvoidmain(String[]args)感謝閱讀{ChinaPeoplechinaPeople=newChinaPeople();謝謝閱讀AmericanPeopleamericanPeople=newAmericanPeople();精品文檔放心下載BeijingPeoplebeijingPeople=newBeijingPeople();感謝閱讀chinaPeople.speakHello();americanPeople.speakHello();感謝閱讀beijingPeople.speakHello();謝謝閱讀chinaPeople.averageHeight();謝謝閱讀americanPeople.averageHeight();感謝閱讀beijingPeople.averageHeight();感謝閱讀chinaPeople.averageWeight();謝謝閱讀americanPeople.averageWeight();精品文檔放心下載beijingPeople.averageWeight();謝謝閱讀chinaPeople.chinaGongfu();精品文檔放心下載americanPeople.americanBoxing();精品文檔放心下載beijingPeople.beijingOpera();感謝閱讀beijingPeople.chinaGongfu();精品文檔放心下載},.}【本題知識(shí)點(diǎn)】子類的繼承性;子類對(duì)象的創(chuàng)建過程;方法的繼承與重寫?!緦?shí)驗(yàn)指導(dǎo)】如果子類可以繼承父類的方法,子類就有權(quán)利重寫這個(gè)方法,子類通過重寫父類的方法可以改變方法的具體行為。謝謝閱讀方法重寫時(shí)一定要保證方法的名字、類型、參數(shù)個(gè)數(shù)和類型同父類的某個(gè)方法完全相同,只有這樣,子類繼承的這個(gè)方法才被隱藏。感謝閱讀子類在重寫方法時(shí),不可以將實(shí)例方法更改成類方法,也不可以將類方法更改為實(shí)例方法,即如果重寫的方法是static方法,static關(guān)鍵字必須要保留;如果重寫的方法是實(shí)例方法,重寫時(shí)不可以用static修飾該方法。感謝閱讀【學(xué)生解答】(1)程序代碼:【代碼1】publicvoidaverageWeight()謝謝閱讀{weight=65;System.out.println("中國人平均體重:"+weight+"公斤");感謝閱讀}【代碼2】publicvoidspeakHello()謝謝閱讀{System.out.println("Howdoyoudo");精品文檔放心下載}【代碼3】publicvoidaverageHeight()感謝閱讀{height=176;System.out.println("American'saverageheight:"+height感謝閱讀+"cm");}【代碼4】publicvoidaverageHeight()精品文檔放心下載{height=172.5;System.out.println("北京人平均身高:"+height+"厘米");謝謝閱讀}【代碼5】publicvoidaverageWeight()精品文檔放心下載{weight=70;System.out.println("北京人平均體重:"+weight+"公斤");精品文檔放心下載}(2)運(yùn)行結(jié)果截圖:,.【思考題(選做)】People類中的publicvoidspeakHello(),publicvoidaverageHeight(),publicvoid精品文檔放心下載averageWeight()三個(gè)方法的方法體中的語句是否可以省略?精品文檔放心下載【答:】可以省略.3.2成員變量隱藏與super關(guān)鍵字【題2銀行與利息】在Lab4項(xiàng)目中,編寫程序。驗(yàn)證教材第5章81頁的【例5-7】。感謝閱讀假設(shè)銀行Bank已經(jīng)有了按整年year計(jì)算利息的一般方法,其中year只能取正整數(shù)。精品文檔放心下載如按整年計(jì)算的方法:DoublecompuerInterest(){interest = year*0.35*savedMoney;精品文檔放心下載returninterest;}建設(shè)銀行的天利息計(jì)算公式為:dayInterst=天數(shù)*0.0001*存款數(shù)感謝閱讀大連銀行的天利息計(jì)算公式為:dayInterst=天數(shù)*0.00012*存款數(shù)感謝閱讀參照例子中的建設(shè)銀行或大連銀行,再編寫一個(gè)商業(yè)銀行,讓程序輸出8000元存在商業(yè)銀行8年零236天的利息。謝謝閱讀【知識(shí)點(diǎn)】成員變量隱藏和方法重寫;super關(guān)鍵字?!緦?shí)驗(yàn)指導(dǎo)】當(dāng)super調(diào)用被隱藏的方法時(shí),該方法中出現(xiàn)的成員變量是被子類隱藏的成員變量或繼承的成員變量。精品文檔放心下載,.子類不繼承父類的構(gòu)造方法,因此,子類在其構(gòu)造方法中需使用super來調(diào)用父類的構(gòu)造方法,而且super必須是子類構(gòu)造方法中的頭一條語句,即如果在在子類的構(gòu)造方法中,沒有明顯地寫出super關(guān)鍵字來調(diào)用父類的某個(gè)構(gòu)造方法,那么默認(rèn)有“super();”。精品文檔放心下載類中定義多個(gè)構(gòu)造方法時(shí),建議包括一個(gè)不帶參數(shù)的構(gòu)造方法,以便子類可以省略謝謝閱讀“super();”?!緦W(xué)生解答】(1)商業(yè)銀行的程序代碼:classBank{intsavedMoney;intyear;doubleinterest;publicdoublecomputerInterest(){感謝閱讀interest=year*0.035*savedMoney;謝謝閱讀returninterest;}}classBusinessBankextendsBank{感謝閱讀doubleyear;publicdoublecomputerInterest(){謝謝閱讀super.year=(int)year;doubleremainNumber=year-(int)year;感謝閱讀intday=(int)(remainNumber*1000);謝謝閱讀interest=puterInterest()+day*0.0001*savedMoney;System.out.printf("%d元存在商業(yè)銀行%d年零%d天的利息:%.2f元精品文檔放心下載\n",savedMoney,super.year,day,interest);感謝閱讀returninterest;}}publicclassExample5_2{publicstaticvoidmain(String[]args){感謝閱讀BusinessBankbank1=newBusinessBank();感謝閱讀bank1.savedMoney=8000;bank1.year=5.236;doubleinterest1=puterInterest();感謝閱讀}}(2)商業(yè)銀行的運(yùn)行結(jié)果截圖:,.3.3接口【題3歌手大賽與學(xué)生體重評(píng)估】在Lab4項(xiàng)目中,編寫程序,要求模擬歌手大賽計(jì)算選手成績和評(píng)估班級(jí)學(xué)生體重。歌手大賽計(jì)算選手成績的方法是去掉一個(gè)最高分和一個(gè)最低分后再計(jì)算平均分,而學(xué)校評(píng)估一個(gè)班級(jí)的學(xué)生的體重時(shí),是計(jì)算全班同學(xué)的平均體重。SongGame類和School類都實(shí)現(xiàn)了ComputerAverage接口,但實(shí)現(xiàn)方式不同。精品文檔放心下載ComputerAverage類和Estimator主類的部分代碼已給出(如下),按下列代碼模板要求,將【代碼】部分替換為Java程序代碼,并寫出SongGame類和School類。感謝閱讀//ComputerAverage.javapublicinterfaceComputerAverage{ //接口謝謝閱讀publicdoubleaverage(doublex[]);謝謝閱讀}//Estimator.javapublicclassEstimator{ //主類感謝閱讀publicstaticvoidmain(String[]args)謝謝閱讀{doublea[]={9.89,9.88,9.99,9.12,9.69,9.76,8.97};感謝閱讀doubleb[]={56,55.5,65,50,51.5,53.6,70,49,66,62,46};精品文檔放心下載ComputerAveragecomputer;computer=newSongGame();謝謝閱讀//computer調(diào)用average(doublex[])方法,將數(shù)組a傳遞給參數(shù)x感謝閱讀//【代碼1】System.out.printf("%n");System.out.printf("歌手最后得分:%5.3f\n",result);精品文檔放心下載computer=newSchool();,.//computer調(diào)用average(doublex[])方法,將數(shù)組b傳遞給參數(shù)x精品文檔放心下載//【代碼2】System.out.printf("學(xué)生平均體重:%5.2fkg",result);謝謝閱讀}}運(yùn)行效果如下圖?!局R(shí)點(diǎn)】接口體中只有常量的聲明(沒有變量)和抽象方法聲明。而且接口體中所有的常量的訪問權(quán)限一定都是public(允許省略public、final修飾符)、所有的抽象方法的訪問權(quán)限一定都是public(允許省略public、abstract修飾符)。感謝閱讀類實(shí)現(xiàn)接口,以便綁定接口中的方法。一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,類通過使用關(guān)鍵感謝閱讀implements聲明自己實(shí)現(xiàn)一個(gè)或多個(gè)接口。如果一個(gè)非抽象類實(shí)現(xiàn)了某個(gè)接口,那么這個(gè)類必須重寫的所有方法。精品文檔放心下載【實(shí)驗(yàn)指導(dǎo)】可以把實(shí)現(xiàn)某一接口的類創(chuàng)建的對(duì)象的引用賦給該接口聲明的接口變量中,那么該接口變量就可以調(diào)用被類實(shí)現(xiàn)的接口方法。謝謝閱讀接口產(chǎn)生的多態(tài)就是指不同類在實(shí)現(xiàn)同一個(gè)接口時(shí)可能具有不同的實(shí)現(xiàn)方式。謝謝閱讀【學(xué)生解答】(1)程序代碼:【代碼1】doubleresult=computer.average(a);精品文檔放心下載【代碼2】result=computer.average(b);謝謝閱讀//SongGame.javaclassSongGameimplementsComputerAverage{謝謝閱讀publicdoubleaverage(doublex[]){精品文檔放心下載doublemin=10,max=-20,sum=0;精品文檔放心下載for(inti=0;i<x.length;i++){精品文檔放心下載if(x[i]<=min){min=x[i];}if(x[i]>=max){max=x[i];}sum+=x[i];}sum=sum-min-max;sum=(double)(sum/(x.length-2));精品文檔放心下載returnsum;},.}//School.javaclassSchoolimplementsComputerAverage{謝謝閱讀publicdoubleaverage(doublex[]){精品文檔放心下載doublesum=0;for(inti=0;i<x.length;i++){感謝閱讀sum+=x[i];}doubleaver=(double)(sum/x.length);感謝閱讀returnaver;}}(2)運(yùn)行結(jié)果截圖:【思考題(選做)】School類如果不重寫publicdoubleaverage(doublex[])方法,程序編譯時(shí)提示怎樣的錯(cuò)精品文檔放心下載誤?,.【答:】3.4接口回調(diào)(選做)【題4(選做)天氣預(yù)報(bào)】在Lab4項(xiàng)目中,編寫一個(gè)天氣預(yù)報(bào)的Java應(yīng)用程序,天氣可能出現(xiàn)不同的狀態(tài),要求用接口封裝天氣的狀態(tài),具體要求如下:謝謝閱讀(1)編寫一個(gè)接口WeatherState,該接口有一個(gè)名字為voidshowState()的方法。感謝閱讀(2)編寫Weather類,該類中有一個(gè)WeatherState接口聲明的變量state。另外,該類有一個(gè)show()方法,在該方法中讓接口state回調(diào)showstate()方法。精品文檔放心下載(3)編寫若干個(gè)實(shí)現(xiàn)WeatherState接口的類,負(fù)責(zé)刻畫天氣的各種狀態(tài)。精品文檔放心下載(4)編寫主類,在主類中進(jìn)行天氣預(yù)報(bào)。程序運(yùn)行效果如下圖?!局R(shí)點(diǎn)】掌握面向接口的編程思想:程序設(shè)計(jì)時(shí)經(jīng)常會(huì)使用接口,因?yàn)榻涌谥魂P(guān)心操作,不關(guān)心這些操作具體實(shí)現(xiàn)的細(xì)節(jié),可以使程序的設(shè)計(jì)者把主要精力放在程序的設(shè)計(jì)上,而不拘泥于細(xì)節(jié)的實(shí)現(xiàn)(細(xì)節(jié)留給接口的實(shí)現(xiàn)者),即避免設(shè)計(jì)者把大量的時(shí)間和精力花費(fèi)與具體的算法上。感謝閱讀使用接口進(jìn)行程序設(shè)計(jì)的核心技術(shù)之一是使用接口回調(diào),即將實(shí)現(xiàn)接口的類的對(duì)象的引用放到接口變量中,那么這個(gè)接口變量就可以調(diào)用類實(shí)現(xiàn)的接口方法。感謝閱讀面向接口編程,是指當(dāng)設(shè)計(jì)某種重要的類是,不讓該類面向具體的類,而是面向接口,即所設(shè)計(jì)類中的重要數(shù)據(jù)是接口聲明的變量,而不是具體類聲明的對(duì)象。謝謝閱讀【學(xué)生解答】(1)程序代碼://WeatherState.javapublicinterfaceWeatherState{謝謝閱讀publicvoidshowState();},.//TodayMoring.javaclassTodayMoringimplementsWeatherState{精品文檔放心下載publicvoidshowState(){System.out.println("今天白天:多云,有時(shí)陰。");精品文檔放心下載}}//TodayNight.javaclassTodayNightimplementsWeatherState{謝謝閱讀publicvoidshowState(){System.out.println("今天夜間:小雨轉(zhuǎn)大雨");謝謝閱讀}}//TomorrowMoring.javaclassTomorrowMoringimplementsWeatherState{精品文檔放心下載publicvoidshowState(){System.out.println("明天白天:小雨。");感謝閱讀}}//TomorrowNight.javaclassTomorrowNightimplementsWeatherState{謝謝閱
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 橋墩預(yù)埋管道施工方案
- 設(shè)計(jì)項(xiàng)目接活方案
- 路面墊層試驗(yàn)段施工方案
- 提高涉水突發(fā)環(huán)境事件應(yīng)急響應(yīng)與處置能力的策略與實(shí)施路徑
- 嘉定區(qū)日式庭院施工方案
- 聚脲地坪施工方案
- 設(shè)計(jì)企業(yè)業(yè)績錄入方案
- 龍華店鋪電路維修施工方案
- 鄉(xiāng)村人才隊(duì)伍建設(shè)與培養(yǎng)策略
- 2025屆陜西省西安高新逸翠園校中考聯(lián)考生物試題含解析
- 2024高考物理廣東卷押題模擬含解析
- 縮短創(chuàng)傷患者急診滯留時(shí)間醫(yī)院護(hù)理品管圈成果匯報(bào)
- 青少年農(nóng)業(yè)科普館建設(shè)方案
- 新測繪法解讀
- 【光明乳業(yè)企業(yè)償債能力問題及完善建議8900字論文】
- 提高感染性休克集束化治療達(dá)標(biāo)率
- 譯林版七年級(jí)下冊(cè)英語單詞默寫表
- 人教版五年級(jí)上冊(cè)數(shù)學(xué)簡便計(jì)算大全600題及答案
- 2016-2023年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年考點(diǎn)試題甄選合集含答案解析
- 政治單招考試重點(diǎn)知識(shí)點(diǎn)
- 專題01 中華傳統(tǒng)文化-中考英語時(shí)文閱讀專項(xiàng)訓(xùn)練
評(píng)論
0/150
提交評(píng)論