- UML基礎(chǔ)與Rose建模實(shí)用教程(第三版)
- 謝星星 周新國編著
- 528字
- 2020-11-23 15:05:06
1.2.4 多態(tài)
多態(tài)是指兩個(gè)或多個(gè)屬于不同類的對(duì)象,對(duì)于同一個(gè)消息或方法調(diào)用所做出響應(yīng)的能力。面向?qū)ο笤O(shè)計(jì)也借鑒了客觀世界的多態(tài)性,體現(xiàn)在不同的對(duì)象可以根據(jù)相同的消息產(chǎn)生各自不同的動(dòng)作。例如,在“圖形”基類中定義了“繪圖”這個(gè)行為,但并不指定這個(gè)行為在執(zhí)行時(shí)畫出什么樣的圖形。派生類“橢圓”和“矩形”都繼承了圖形類的繪圖行為,但其功能卻不同:一個(gè)是要畫出一個(gè)橢圓,另一個(gè)是要畫出一個(gè)矩形。這樣一個(gè)畫圖的消息發(fā)出以后,橢圓類和矩形類的對(duì)象根據(jù)接收到這條消息后各自執(zhí)行不同的畫圖行為。如圖1-3所示,就是多態(tài)性的表現(xiàn)。

圖1-3 圖形多態(tài)性示例
具體到面向?qū)ο蟮某绦蛟O(shè)計(jì)而言,多態(tài)性(Polymorphism)是指在兩個(gè)或多個(gè)屬于不同類中具有相同的函數(shù)名對(duì)應(yīng)多個(gè)具有相似功能的不同函數(shù),有點(diǎn)拗口,換句話說,就是可以使用相同的調(diào)用方式來調(diào)用這些具有不同功能的同名函數(shù)。
繼承性和多態(tài)性的結(jié)合,可以生成一系列雖然類似但卻獨(dú)一無二的對(duì)象。由于繼承性,這些對(duì)象共享許多相似的特征;由于多態(tài)性,針對(duì)相同的消息,不同對(duì)象可以有獨(dú)特的表現(xiàn)方式,實(shí)現(xiàn)個(gè)性化的設(shè)計(jì)。
上述面向?qū)ο蠹夹g(shù)的幾個(gè)特征,為提高軟件的開發(fā)效率起著非常重要的作用,通過編寫可重用的、可維護(hù)的、可修改的、可共享的代碼等的方式,可以充分發(fā)揮面向?qū)ο蠹夹g(shù)的優(yōu)勢(shì)。
- Progressive Web Apps with React
- NLTK基礎(chǔ)教程:用NLTK和Python庫構(gòu)建機(jī)器學(xué)習(xí)應(yīng)用
- 趣學(xué)Python算法100例
- 云原生Spring實(shí)戰(zhàn)
- 區(qū)塊鏈:以太坊DApp開發(fā)實(shí)戰(zhàn)
- Interactive Applications Using Matplotlib
- Oracle BAM 11gR1 Handbook
- 計(jì)算機(jī)應(yīng)用基礎(chǔ)實(shí)踐教程
- Instant Automapper
- MySQL 8從零開始學(xué)(視頻教學(xué)版)
- 游戲設(shè)計(jì)的底層邏輯
- Python無監(jiān)督學(xué)習(xí)
- 透視C#核心技術(shù):系統(tǒng)架構(gòu)及移動(dòng)端開發(fā)
- Tkinter GUI Programming by Example
- Access 2016數(shù)據(jù)庫應(yīng)用與開發(fā):實(shí)戰(zhàn)從入門到精通(視頻教學(xué)版)