Java05繼承與多態(tài)

Java05繼承與多態(tài)

ID:45584311

大?。?02.00 KB

頁數(shù):30頁

時間: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)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

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

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

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

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

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

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

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

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

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

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