Java05繼承與多態(tài)

Java05繼承與多態(tài)

ID:45584311

大小:602.00 KB

頁數(shù):30頁

時(shí)間:2019-11-15

Java05繼承與多態(tài)_第1頁
Java05繼承與多態(tài)_第2頁
Java05繼承與多態(tài)_第3頁
Java05繼承與多態(tài)_第4頁
Java05繼承與多態(tài)_第5頁
資源描述:

《Java05繼承與多態(tài)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、第5章繼承與多態(tài)陸雪松生物醫(yī)學(xué)工程學(xué)院主要內(nèi)容Java的繼承機(jī)制Java的多態(tài)性抽象類和最終類接口類型的定義和實(shí)現(xiàn)8/25/20212第5章繼承與多態(tài)Java的繼承機(jī)制繼承是現(xiàn)實(shí)世界中實(shí)體間的一種關(guān)系,映射到面向?qū)ο蟪绦蛑芯褪莾蓚€(gè)類之間的一種關(guān)系。理解繼承是理解面向?qū)ο蟪绦蛟O(shè)計(jì)所有方面的關(guān)鍵所在,它允許在構(gòu)成軟件系統(tǒng)的類層次結(jié)構(gòu)中重用已存在類的程序代碼并擴(kuò)充它們以建立一個(gè)新類來實(shí)現(xiàn)新的功能,從而大大提高軟件的可重用性和可維護(hù)性。8/25/20213第5章繼承與多態(tài)設(shè)計(jì)一個(gè)類的原則:應(yīng)實(shí)現(xiàn)定義明確的單任務(wù),而不是用多個(gè)任務(wù)去加重該類的負(fù)擔(dān),最好不用一個(gè)類來描述現(xiàn)實(shí)世界

2、中既有共性又有差異的兩類實(shí)體,而是用一個(gè)類擴(kuò)展另一個(gè)類的“繼承關(guān)系”來描述。Java的繼承機(jī)制例如:平面幾何圖形中的“圓”,是一種由點(diǎn)集合所構(gòu)成的平面幾何圖形。該點(diǎn)集合以一個(gè)點(diǎn)(坐標(biāo))作為中心,另外點(diǎn)與該中心具有相等距離(半徑)。對(duì)此,面向?qū)ο蠼馕龅慕Y(jié)果應(yīng)該設(shè)計(jì)兩個(gè)類,即Point類和Circle類,且兩個(gè)類具有繼承關(guān)系,即Circle類由Point類繼承而來,或者說Circle類擴(kuò)展(extends)了Point類。8/25/20214第5章繼承與多態(tài)子類還可以繼續(xù)往下繼承,即Circle類擴(kuò)展為Cylinder(圓柱體)類。那么,就稱Cylinder類是Circ

3、le類的直接子類,簡(jiǎn)稱子類;反之,稱Circle類是Cylinder類的直接超類,簡(jiǎn)稱父類。而稱Point類是Cylinder類的間接超類,稱Cylinder是Point類的間接子類。Java的繼承機(jī)制8/25/20215第5章繼承與多態(tài)Java的繼承機(jī)制由C++發(fā)展而來,與之有相似之處,但也有不同特點(diǎn):(1)Java與C++不同,只有公有繼承方式而沒有私有繼承方式。因?yàn)樵L問控制修飾符可以實(shí)現(xiàn)繼承樹中的嚴(yán)密封裝,加上Java還增加有程序包的隱藏機(jī)制,所以,它具有公有繼承方式下的所有特性。對(duì)任何已有的類,無論是Java系統(tǒng)提供的,還是用戶自行定義的類,都可以擴(kuò)展出新的

4、子類。由于子類將繼承超類的所有成員變量和方法,不管它們是什么類修飾符,超類的所有成員變量和方法都自動(dòng)成為子類的變量和方法。Java的繼承機(jī)制8/25/20216第5章繼承與多態(tài)不管是父類還是子類的對(duì)象都可以直接訪問自身的公有變量和方法,但不能直接訪問自身的私有變量和方法、保護(hù)變量和方法。那些隱藏的私有和保護(hù)變量、方法只有通過其對(duì)象調(diào)用公有方法才能訪問。不管是直接子類的對(duì)象還是間接子類的對(duì)象都可以訪問公有超類或者同一個(gè)程序包內(nèi)友元超類中的公有變量和方法,而不能訪問它們私有的和保護(hù)的變量和方法。在子類的任何方法體內(nèi),都可以直接地訪問超類的保護(hù)變量和方法,不管是直接超類還

5、是間接超類。但不能訪問超類的私有變量和方法,它只有通過超類自身的公有方法才能訪問。Java的繼承機(jī)制8/25/20217第5章繼承與多態(tài)(2)Java只支持單繼承,而不支持多繼承。對(duì)于現(xiàn)實(shí)世界中大量存在的多繼承關(guān)系是采用接口類型來實(shí)現(xiàn)的。(3)Java除了提供一個(gè)this引用外,還提供一個(gè)super引用變量,它用來替代直接超類及父類,但不能替代間接超類。(4)超類的對(duì)象引用可以用來指向它的任何子類的對(duì)象,但反之子類的對(duì)象引用不能指向它的超類對(duì)象。(5)子類無條件地繼承父類的所有方法,但不繼承父類的構(gòu)造方法。Java的繼承機(jī)制8/25/20218第5章繼承與多態(tài)【例6

6、-4】類之間的繼承若干示例Java的繼承機(jī)制8/25/20219第5章繼承與多態(tài)Java的多態(tài)性多態(tài)(polymorphism)是面向?qū)ο蟮囊淮筇卣?,它反映了現(xiàn)實(shí)世界中事物行為的動(dòng)態(tài)變化。不是指整個(gè)類都具有多態(tài)性,而是指類的方法具有多態(tài)性。使用多態(tài)與重載的優(yōu)點(diǎn)是便于管理名字空間實(shí)現(xiàn)運(yùn)行時(shí)的動(dòng)態(tài)聯(lián)編提高了抽象程度降低維護(hù)工作量增加程序設(shè)計(jì)的靈活性。8/25/202110第5章繼承與多態(tài)Java的多態(tài)性Java語言中多態(tài)一般有四種表現(xiàn)形式第一種是強(qiáng)制類型轉(zhuǎn)換第二種是方法重載第三種是類或方法定義中的類型參數(shù)第四種是繼承與實(shí)現(xiàn)中的抽象操作8/25/202111第5章繼承與多

7、態(tài)在包含超類和子類的繼承樹中,有兩種方式對(duì)多個(gè)方法體使用相同方法名:使用不同參數(shù)表,其內(nèi)至少有一個(gè)參數(shù)的類型不同,這稱為方法重載;子類將超類中的一個(gè)方法名重復(fù)使用并編寫一個(gè)新的方法體,且采用完全相同的參數(shù)表和返回類型,這稱為方法覆蓋。Java的多態(tài)性8/25/202112第5章繼承與多態(tài)將一個(gè)方法或函數(shù)調(diào)用與一個(gè)方法體或函數(shù)體鏈接起來的操作稱為“聯(lián)編”。在程序運(yùn)行之前編譯時(shí)就執(zhí)行的聯(lián)編稱為靜態(tài)聯(lián)編;在程序運(yùn)行期間根據(jù)對(duì)象的類型才能決定鏈接哪一個(gè)方法體或函數(shù)體的聯(lián)編稱為動(dòng)態(tài)聯(lián)編。Java全部采用動(dòng)態(tài)聯(lián)編技術(shù),編程時(shí)不用考慮是否應(yīng)進(jìn)行動(dòng)態(tài)聯(lián)編。Java的多態(tài)性8/2

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。