国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

面向對象之多態理解,多態的作用與好處

2019-11-14 15:42:03
字體:
來源:轉載
供稿:網友

什么是多態?

簡單的說,就是用父類的引用指向子類的對象。多態可以理解成“一個接口,多種實現”,就是同一種事物表現出的多種形態,多態允許將子類的對象當作父類的對象使用,某父類型的引用指向其子類型的對象,調用的方法是該子類型的方法。

多態的作用?

      把不同的子類對象都當作父類來看,可以屏蔽不同子類對象之間的差異,寫出通用的代碼,做出通用的編程,以適應需求的不斷變化。

看下面的例子,程序員還是比較喜歡用代碼來說明問題

舉個例子,針對中國軍人打日本鬼子這件事,用我們程序來實現的話就是這樣:

假如現在是1900年,中華民族的軍人是用大刀來殺敵的,按照OO的思想,我們會抽象出來兩個個類,一個表示大刀,一個表示軍人,即軍人用大刀殺敵;其中,武器有個kill()方法,表示殺日本鬼子,軍人有個方法是用大刀來戰斗。我們的實現方式是這樣:

如果你寫出這樣的代碼的話,恭喜你!你中大獎了!---------------------你會被項目經理砍死的!!!!!!!

項目經理為什么會砍你呢?
因為你寫的代碼偶合性太強了!

想一想,

如果我們的需求變了,日本鬼子1939年又來侵略中國了,那么我們的戰士該怎么辦啊,總不能像以前一樣拿著大刀跟人家打仗吧,那樣的話抗日戰爭會不會到現在還沒結束呢?!

所以到我們程序這兒,以前的系統怎么辦啊.因此不要指望你作的系統永遠不會變化
我們的系統只能修改!這就是項目經理砍你的原因
我們的系統會增加一個槍支類,也有個kill()方法

我們的核心業務類Soldier也要升級

這樣做是不是耦合性太強了?以后的情況,我們可以把大刀和槍等作為武器抽象出來:

多態可以用在什么地方呢?

可以用在方法的參數中和方法的返回類型中。

其中多態用于方法參數時上面給出了代碼.我這里給出在方法的返回類型中如何使用多態。

上面的例子中,不管是Sword還是Gun都是我們自己直接new出來的.我們可以設計一個工廠類,專門生成武器

這實際上就是設計模式中的簡單工廠模式!

另外,我我們在JDK中可以大量的看到多態的應用,比如在Object類中的equals(Object obj)方法中,參數是個Object

類型的參數.因為Object是java中所有類的基類.,但是才傳入參數的時候,可以傳入任何一個類的對象
這就是多態的應用!

使用多態可以解決項目中緊偶合的問題,提高程序的課擴展性.是OCP原則的一個具體的實現


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 广东省| 广平县| 嘉黎县| 新营市| 新余市| 大渡口区| 巴东县| 通化县| 永定县| 米易县| 武山县| 东安县| 镇沅| 墨玉县| 太保市| 汝南县| 栾城县| 南部县| 明水县| 皋兰县| 丰镇市| 宜宾市| 赫章县| 寿宁县| 万载县| 蕉岭县| 静宁县| 沙坪坝区| 平泉县| 凌源市| 余干县| 韩城市| 嵩明县| 肥西县| 鲜城| 古田县| 文山县| 同仁县| 晋宁县| 离岛区| 中卫市|