![Java程序設(shè)計(jì)-多態(tài)與接口_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/14/93be6dad-b3bd-4713-adee-6b00d77f9d78/93be6dad-b3bd-4713-adee-6b00d77f9d781.gif)
![Java程序設(shè)計(jì)-多態(tài)與接口_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/14/93be6dad-b3bd-4713-adee-6b00d77f9d78/93be6dad-b3bd-4713-adee-6b00d77f9d782.gif)
![Java程序設(shè)計(jì)-多態(tài)與接口_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/14/93be6dad-b3bd-4713-adee-6b00d77f9d78/93be6dad-b3bd-4713-adee-6b00d77f9d783.gif)
![Java程序設(shè)計(jì)-多態(tài)與接口_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/14/93be6dad-b3bd-4713-adee-6b00d77f9d78/93be6dad-b3bd-4713-adee-6b00d77f9d784.gif)
![Java程序設(shè)計(jì)-多態(tài)與接口_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/14/93be6dad-b3bd-4713-adee-6b00d77f9d78/93be6dad-b3bd-4713-adee-6b00d77f9d785.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Java程序設(shè)計(jì)實(shí)驗(yàn)四:繼承、多態(tài)與接口1. 提交期限和方法期限:第 12 周周五(2015-11-27) 23: 59 pm方法:由學(xué)習(xí)委員收集所有學(xué)生的實(shí)驗(yàn)報(bào)告,以電子檔的形式提交給任課教師(發(fā)郵箱:9867941 )。2. 實(shí)驗(yàn)?zāi)康募耙笳莆認(rèn)ava的基本數(shù)據(jù)類型、運(yùn)算符、表達(dá)式和語句。運(yùn)行環(huán)境:JDK1.7開發(fā)環(huán)境:Ecli pse3. 實(shí)驗(yàn)內(nèi)容及題目3.1子類的繼承與方法的重寫【題1中國人與美國人】在 Eclipse中創(chuàng)建名為Lab4的新項(xiàng)目,編寫程序模擬中國人、 美國人、北京人。除主類外,程序中有4個(gè)類:Peopie、ChinaPeople、AmericanPeopie和Beiji
2、ngPeople類。要求如下:(1 )Peopie 類有權(quán)限是 protected 的 double 型成員變量:height 和 weight,以及 public void speakHello( )、public void averageHeight()禾R public void averageWeight()方法。(2) ChinaPeopie 類是 Peopie類的子類,新增了 public void chinaGongfu()方法。要求 ChinaPeople 重寫父類的 public void speakHello ()、public void averageHeight()禾口
3、 public void averageWeight()方法。(3) AmericanPeopie 類是 Peopie 的子類,新增 public void americanBoxing()方法。要求 AmericanPeople 重寫父類的 public void speakHello( )、public void averageHeight()禾R public void averageWeight()方法。Java程序代碼。(4) BeijingPeopie 類是 ChinaPeople 的子類,新增 public void beijingOpera()方法。要求 BeijingPeop
4、le 重寫父類的 public void speakHello( )、public void averageHeight()禾R public void averageWeight()方法。運(yùn)行效果如下圖。按下列代碼模板要求,將【代碼】部分替換為您好Hou dri pou dnftnrplciiH' i11TC, ft citiT向人皈吆-斤Iflnrrirtn s nvrur:?S - B kgt=-0注斤部分代碼已給出:/ PeopI e.javap ublic class Peoplep rotected double weight, height;p ublic void sp
5、 eakHello()System.out .p rintlnC'yayayaya");p ublic void averageHeight()height = 173;System.out. printlnC'average height:" + height);p ublic void averageWeight()weight = 70;System.out. printlnC'average weight:" + weight);/China PeopI e.javap ublic class China People extend
6、s Peoplep ublic void sp eakHello() System.out.println("您好"); p ublic void averageHeight()height = 168.78;System.out.println("中國人平均身高:"+ height + "厘米");重寫Public void averageWeight()方法,輸出:"中國人平均體重:65公斤"/【代碼1】 p ublic void chinaGongfu() System.out.println("坐
7、如鐘,站如松,睡如弓 ");/America nPeopI e.javap ublic class America nPeople extends People重寫 public void speakHello()方法,輸出"How do you do" /【代碼2】重寫 public void averageHeight()方法,輸出"American's average height:176 cm"/【代碼3】p ublic void averageWeight()weight = 75;System.out .p rintln(&
8、quot;American's average weight:" + weight + " kg");p ublic void americanBoxing()System.out.printing 直拳、勾拳、組合拳");/Beijing PeopI e.javap ublic class Beijing People extends China People重寫 public void averageHeight()方法,輸出/【代碼4】重寫 public void averageWeight()方法,輸出"北京人的平均身高:172
9、.5厘米""北京人的平均體重:70公斤-/【代碼5】P ublic void beijing Op era()System.out.println("花臉、青衣、花旦和老生");/Exa mpl e.javap ublic class Examplep ublic static void main(Stnng args)China People china People = new China PeopI e();America nPeople america nPeople = new America nPeopI e();Beijing People
10、 beijingPeople = new BeijingPeopIe();china PeopI e.s peakHello();america nPeopI e.s peakHello(); beijing PeopI e.s peakHello();china PeopI e.averageHeight();america nPeopI e.averageHeight(); beijing PeopI e.averageHeight();china PeopI e.averageWeight();america nPeopI e.averageWeight();beijing PeopI
11、e.averageWeight();china PeopI e.chinaGongfu();america nPeopI e.americanBoxing();beijing PeopI e.beijing Op era(); beijing PeopI e.chinaGongfu();方法的繼承與重寫?!緦?shí)驗(yàn)指導(dǎo)】如果子類可以繼承父類的方法,子類就有權(quán)利重寫這個(gè)方法,子類通過重寫父類的 方法可以改變方法的具體行為。方法重寫時(shí)一定要保證方法的名字、類型、參數(shù)個(gè)數(shù)和類型同父類的某個(gè)方法完全 相同,只有這樣,子類繼承的這個(gè)方法才被隱藏。子類在重寫方法時(shí),不可以將實(shí)例方法更改成類方法,也不可以將類方
12、法更改為實(shí) 例方法,即如果重寫的方法是static方法,static關(guān)鍵字必須要保留;如果重寫的方法是實(shí)例方法,重寫時(shí)不可以用static修飾該方法。1.2.3.【學(xué)生解答】(1)程序代碼:【代碼 1 public void averageWeight()weight = 65;System. out .pnntln("中國人平均體重:"+ weight+"公斤“);【代碼 2 publicvoid speakHello()System. out .println("How do you do");【代碼 3 publicvoid averag
13、eHeight()height = 176;System. out .println("American's average height:"+height+"cm");【代碼 4 public void averageHeight()height = 172.5;System. out .printing北京人平均身高:"+ height + "厘米");【代碼 5 publicvoid averageWeight()weight = 70;System. out .println(" (2 )運(yùn)行結(jié)果截
14、圖:北京人平均體重:"+ weight+"公斤");【本題知識點(diǎn)】1. 子類的繼承性;2. 子類對象的創(chuàng)建過程;3.3.2成員變量隱藏與super關(guān)鍵字【題2銀行與利息】在Lab4項(xiàng)目中,編寫程序。驗(yàn)證教材第5章81頁的【例5-7】。假設(shè)銀行Bank已經(jīng)有了按整年year計(jì)算利息的一般方法,其中year只能取正整數(shù)。 如按整年計(jì)算的方法:Double compuerin terest()in terest = year * 0.35 * savedM oney; return in terest;daylnterst =天數(shù) * 0.0001 * 存款數(shù) dayl
15、nterst =天數(shù) * 0.00012 * 存款數(shù)建設(shè)銀行的天利息計(jì)算公式為: 大連銀行的天利息計(jì)算公式為:8000元存參照例子中的建設(shè)銀行或大連銀行,再編寫一個(gè)商業(yè)銀行,讓程序輸出 在商業(yè)銀行8年零236天的利息?!局R點(diǎn)】1. 成員變量隱藏和方法重寫;2. super關(guān)鍵字?!緦?shí)驗(yàn)指導(dǎo)】1. 當(dāng)super調(diào)用被隱藏的方法時(shí),該方法中出現(xiàn)的成員變量是被子類隱藏的成員變量 或繼承的成員變量。2. 子類不繼承父類的構(gòu)造方法,因此,子類在其構(gòu)造方法中需使用super來調(diào)用父類的構(gòu)造方法,而且super必須是子類構(gòu)造方法中的頭一條語句,即如果在在子類的構(gòu)造方法中,沒有明顯地寫出sup er關(guān)鍵字來
16、調(diào)用父類的某個(gè)構(gòu)造方法,那么默認(rèn)有“ super();”。3. 類中定義多個(gè)構(gòu)造方法時(shí),建議包括一個(gè)不帶參數(shù)的構(gòu)造方法,以便子類可以省略“ super(); ”?!緦W(xué)生解答】(1 )商業(yè)銀行的程序代碼:class Bankint savedMoney ;int year ;doublein terest;publicdouble computerInterest()interest = year *0.035* savedMoney ; return in terest ;classBus in essBa nkexte nds Bankdouble year ;publicdouble co
17、mputerInterest()super . year = ( int ) year ;double remainNumber = year - ( int ) year ; int day = ( int )( remai nN umber *1000);interest= super .computerInterest()+System. out .printf("%d元存在商業(yè)銀行n" , savedMoney , super . year , day , interest);return in terest ;day *0.0001* savedMoney ;%c
18、年零d天的利息:%.2f元p ublicclass Exa mp Ie5_2 p ublic static void main( Stri ng args Bus in essBa nk bank1 = new Bus in essBa nk(); bank1 . savedMoney = 8000;bank1 . year = 5.236;double interest1 = bank1 .co mp uterI nterest();)(2)商業(yè)銀行的運(yùn)行結(jié)果截圖:3.3 接口【題3歌手大賽與學(xué)生體重評估1在 Lab4項(xiàng)目中,編寫程序,要求模擬歌手大賽計(jì)算 選手成績和評估班級學(xué)生體重。歌手大
19、賽計(jì)算選手成績的方法是去掉一個(gè)最高分和一個(gè)最低分后再計(jì)算平均分,而學(xué)校評估一個(gè)班級的學(xué)生的體重時(shí),是計(jì)算全班同學(xué)的平均 體重。SongGame類和School類都實(shí)現(xiàn)了 ComputerAverage接口,但實(shí)現(xiàn)方式不同。 ComputerAverage類和Estimator主類的部分代碼已給出(如下),按下列代碼模板要求, 將【代碼1部分替換為Java程序代碼,并寫出 SongGame類和School類。/接口/Co mpu terAverage.javap ublic interface Comp uterAveragep ublic double average(double x);/E
20、stimator.javaP ublic class Estimator 主類p ublic static void main(String args)double a = 9.89, 9.88, 9.99, 9.12, 9.69, 9.76, 8.97;double b = 56, 55.5, 65, 50, 51.5, 53.6, 70, 49, 66, 62, 46;Comp uterAverage compu ter;comp uter = new SongGame();/computer調(diào)用average(double x)方法,將數(shù)組 a傳遞給參數(shù) x/【代碼11System.ou
21、t .p rintf("%n");System.out.printf(” 歌手最后得分:%5.3fn", result);comp uter = new School();/computer調(diào)用average(double x)方法,將數(shù)組 b傳遞給參數(shù) x/【代碼2】System.out.printf("學(xué)生平均體重:%5.2f kg", result);運(yùn)行效果如下圖。:3-hanoJ)Rsktn|pLnb4_3 >jauar- F<jT i rvitni'. J aun:Misers xihdi*yXi«Bk
22、C-UkiLrih4>Jdud EsL討:5,6Ge 董2 S*i,7fi tft【知識點(diǎn)】1. 接口體中只有常量的聲明(沒有變量)和抽象方法聲明。而且接口體中所有的常量的訪問權(quán)限一定都是Public (允許省略Public、final修飾符)、所有的抽象方法的訪問權(quán)限一定都是 Public (允許省略Public、abstract修飾符)。2. 類實(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)】1. 可以把實(shí)現(xiàn)某一接口的類創(chuàng)建的對象的引用
23、賦給該接口聲明的接口變量中,那么該 接口變量就可以調(diào)用被類實(shí)現(xiàn)的接口方法。2. 接口產(chǎn)生的多態(tài)就是指不同類在實(shí)現(xiàn)同一個(gè)接口時(shí)可能具有不同的實(shí)現(xiàn)方式。【學(xué)生解答】(1 )程序代碼:【代碼 1 】double result = computer.average(a);【代碼 2】result = computer.average(b);/ Son gGame.javaclass SongGame implementsComputerAveragepublic double average( double x) double min =10, max=-20, sum=0;for (intifi =
24、 0; i <x. length ; i +) if(x i <= min) min = x i ;(x i >= max) max = x i ;sum+=x i ;sum = sum - min - max;sum = ( double )( sum/( x. length -2); return sum;【答:】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)(2)一個(gè)(3)(4)編寫一個(gè)接口 Weatherstate,該接口有一個(gè)名字為void
25、 showState()的方法。編寫 Weather類,該類中有一個(gè) WeatherState接口聲明的變量 state。另外,該類有 show()方法,在該方法中讓接口state回調(diào)showstate()方法。編寫若干個(gè)實(shí)現(xiàn) WeatherState接口的類,負(fù)責(zé)刻畫天氣的各種狀態(tài)。編寫主類,在主類中進(jìn)行天氣預(yù)報(bào)。程序運(yùn)行效果如下圖。C: MJerfPtVihdiriM "vhtu MUdb4_4>曲vat U吝點(diǎn)I h匕臚Fo葉亠C: Ml«<3t£han<iDoahTDV'AM_Q>jAva WojThorForoclac【知
26、識點(diǎn)】掌握面向接口的編程思想:1.2.3.程序設(shè)計(jì)時(shí)經(jīng)常會使用接口,因?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)接口的類的對象的引用放到接口變量中,那么這個(gè)接口變量就可以調(diào)用類實(shí)現(xiàn)的接口方法。面向接口編程,是指當(dāng)設(shè)計(jì)某種重要的類是,不讓該類面向具體的類,而是面向接口,即所設(shè)計(jì)類中的重要數(shù)據(jù)是接口聲明的變量,而不是具體類聲明的對象。頁時(shí)陰.【學(xué)生解答】(1)程序代碼:/WeatherStat
27、e.java p ublic in terfacep ublicvoidWeatherState showState();Iimp leme ntsWeatherStateshowState() out .println("今天白天:多云,有時(shí)陰。“);/TodayMori ng.java class TodayMori ng p ublicvoidSystem. /TodayNight.java class TodayNight p ublic void System.imp leme nts showState() out .println(WeatherState"今天夜間:小雨轉(zhuǎn)大雨");/ TomorrowMori ng.javaclass TomorrowMori ngimpl eme ntsWeatherStatepublic void showState()System. out .println( "明天白天:小雨。 ");/ TomorrowNight.java class TomorrowNight p ublic void System.imp leme ntsWeatherStateshowState()out .println("明天夜
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/Z 45064-2024普通照明用設(shè)備頻閃效應(yīng)客觀試驗(yàn)方法
- MTX-PEG-Cy3-生命科學(xué)試劑-MCE-2911
- ABBV-706-生命科學(xué)試劑-MCE-4729
- 5-Fluoro-PB-22-N-4-fluoropentyl-isomer-生命科學(xué)試劑-MCE-3095
- 3-2-3-Dimethylphenyl-2-methylquinazolin-4-one-生命科學(xué)試劑-MCE-9046
- 二零二五年度租車平臺與車主合作服務(wù)協(xié)議
- 2025年度財(cái)務(wù)審核合同中的稅務(wù)合規(guī)審查標(biāo)準(zhǔn)
- 二零二五年度親子餐飲品牌區(qū)域加盟合作協(xié)議
- 二零二五年度新能源發(fā)電站電工維護(hù)服務(wù)合同
- 二零二五年度智慧城市建設(shè)聘用協(xié)議及勞務(wù)合同
- Unit 7 第3課時(shí) Section A (Grammar Focus -4c)(導(dǎo)學(xué)案)-【上好課】2022-2023學(xué)年八年級英語下冊同步備課系列(人教新目標(biāo)Go For It!)
- 2025年上半年長沙市公安局招考警務(wù)輔助人員(500名)易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 《教育強(qiáng)國建設(shè)規(guī)劃綱要(2024-2035年)》解讀講座
- 2025河北邯鄲世紀(jì)建設(shè)投資集團(tuán)招聘專業(yè)技術(shù)人才30人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 慈溪高一期末數(shù)學(xué)試卷
- 《基于新課程標(biāo)準(zhǔn)的初中數(shù)學(xué)課堂教學(xué)評價(jià)研究》
- 2025年中國東方航空招聘筆試參考題庫含答案解析
- 重大事故隱患判定標(biāo)準(zhǔn)與相關(guān)事故案例培訓(xùn)課件
- 2024年度節(jié)后復(fù)工建筑施工安全培訓(xùn)交底
- 電網(wǎng)基本知識
- 民法原理與實(shí)務(wù)課程教學(xué)大綱
評論
0/150
提交評論