版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、有時(shí)候,類的同一種功能有多種實(shí)現(xiàn)方式,到底采用那種實(shí)現(xiàn)方式,取決于調(diào)用者給定的參數(shù)。例如雜技師能訓(xùn)練動(dòng)物,對于不同的動(dòng)物有不同的訓(xùn)練方式。publicvoidtrain(Dogdog)訓(xùn)練小狗站立,排隊(duì),做算數(shù)publicvoidtrain(Monkeymonkey)訓(xùn)練猴子騎自行車等再如某個(gè)類的一個(gè)功能是比較兩個(gè)城市是否相同,一種方式是比較兩個(gè)城市的名字,一種是除了比較兩個(gè)城市的名字外,還要比較所在國家的名字。publiboolean
2、isSameCity(Stringcity1Stringcity2)returncity1.equals(city2)publicbooleanisSameCity(Stringcity1Stringcity2StirngCountry1StringCountry2)returnisSameCity(city1city2)在例如java.lang.Math類的max()方法能夠從兩個(gè)數(shù)字中取出最大值,它有多種實(shí)現(xiàn)方式。publicsta
3、ticintmax(intaintb)publicstaticintmax(longalongb)publicstaticintmax(floatafloatb)以下程序多次調(diào)用Math類的max()方法,運(yùn)行時(shí),Java虛擬機(jī)先判斷給定參數(shù)的類型,然后決定到底執(zhí)行哪個(gè)max()方法。參數(shù)為int類型,因此執(zhí)行max(intaintb)方法Math.max(12)參數(shù)為flloat類型,因此執(zhí)行max(floatafloatb)方法Ma
4、th.max(1.0F2.9F)對于類的方法(包括從父類中繼承的方法)如果有兩個(gè)方法的方法名相同,但參數(shù)不一致,那么可以說,一個(gè)方法是另一個(gè)方法的重載方法。重載方法滿足以下條件方法名相同方法的參數(shù)類型,個(gè)數(shù),順序至少有一項(xiàng)不相同方法的返回類型可以不相同方法的修飾符可以不相同在一個(gè)類中不允許定義另個(gè)方法名相同,并且參數(shù)簽名也完全相同的方法。假如存在這樣的兩個(gè)方法,Java虛擬機(jī)在運(yùn)行時(shí)就無法決定到底執(zhí)行哪個(gè)方法。參數(shù)簽名是指參數(shù)的類型,個(gè)
5、數(shù)和順序。例如:publicclassSamplepublicvoidamethod(intiStrings)下面哪個(gè)方法可以加入到Sample類中去?publicvoidamethod(Stringsinti)OK是寫字,除了Sub1用腳寫字外,其他都用手寫字??梢猿橄笠粋€(gè)父類Base,它有一個(gè)表示寫字的方法write(),那么這個(gè)方法到底如何實(shí)現(xiàn)呢?從盡可能提高代碼可重用性的角度看,write()方法應(yīng)該采取適用于大多數(shù)子類的實(shí)現(xiàn)方
6、式,這樣就可以避免在大多數(shù)子類中重復(fù)定義write()方法。因此Base類的write()方法定義如下:publicvoidwrite()Base類的write()方法用手寫字由于Sub1類的寫字的實(shí)現(xiàn)方式與Base類不一樣,因此在Sub1類中必須重新定義write()方法。publicvoidwrite()Sub1類中的write()方法用腳寫字如果在子類中定義的一個(gè)方法,其名稱,返回類型及參數(shù)簽名正好與父類中某個(gè)方法的名稱,返回類型
7、及參數(shù)簽名相匹配,那么可以說,子類的方法覆蓋了父類的方法。覆蓋方法必須滿足多種約束1)子類方法的名稱,參數(shù)簽名和返回類型必須與父類方法的名稱,參數(shù)簽名和返回類型一致例如,下列代碼將發(fā)生編譯錯(cuò)誤publicclassBasepublicvoidmethod()……….publicclassSubextendsBasepublicintmethod()…………….return0編譯錯(cuò)誤method()inSimon.Subcannotove
8、rridmethod()inSimon.Baseattemptingtouseincompatiblereturntype在Simon包Sub中的方法不不能重寫(覆蓋)在Simon包Base類中的方法試圖用不匹配的返回類型Java編譯器首先判斷Sub類的method()方法與Base類的method()方法的參數(shù)簽名。由于兩者一致,所以Java編譯器就認(rèn)為Sub類的method()方法試圖覆蓋父類的方法,既然如此,Sub類的method
9、()方法就必須和被覆蓋的方法具有相同的返回類型。以下代碼中子類覆蓋了父類的一個(gè)方法,然后又定義了一個(gè)重載方法,這是合法的。publicclassBasepublicvoidmethod()…………..publicclassSubextendsBasepublicvoidmethod()……….覆蓋Base類的method方法publicintmehod(inta)………return0.重載method方法2)子類方法不能縮小父類方法的訪
溫馨提示
- 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. 眾賞文庫僅提供信息存儲(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 函數(shù)重載和覆蓋的區(qū)別
- 重寫的故事
- 實(shí)驗(yàn)六包的使用與方法重寫
- not與no的區(qū)別
- 重寫函數(shù)
- 文件重寫系統(tǒng)的研究與實(shí)現(xiàn).pdf
- SIM卡重寫系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 重寫翻譯史
- 重寫flex組件
- 從文化角度論翻譯與重寫的關(guān)系.pdf
- 教學(xué)設(shè)計(jì)與教案的區(qū)別(簡案與詳案的區(qū)別)
- 介詞at,in與on的用法與區(qū)別
- 論文與課題的區(qū)別
- vc與pe的區(qū)別
- statementofpurpose與studyingplan的區(qū)別
- 小棗與大棗的區(qū)別
- wlan與wifi的區(qū)別
- 尼龍與滌綸的區(qū)別
- iframe與frame的區(qū)別
- 布魯斯與jazz的區(qū)別
評論
0/150
提交評論