成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

說(shuō)“空話”,做實(shí)事: 談?wù)劧鄳B(tài)

開發(fā) 開發(fā)工具
多態(tài)是碼農(nóng)們必須要理解理解的一個(gè)基本思想, 是面向?qū)ο蟮幕?/div>

[[188436]]

1.什么是多態(tài)?

多態(tài)是碼農(nóng)們必須要理解理解的一個(gè)基本思想, 是面向?qū)ο蟮幕?/p>

但是很多人(包括我)***次接觸多態(tài)時(shí)都會(huì)困惑: 這東西有什么用處?

多態(tài)的例子在Java里非常簡(jiǎn)單,每個(gè)初學(xué)者都會(huì)遇到:

這沒什么啊, 不就是把Apple這個(gè)類的實(shí)例賦值給Fruit 這個(gè)抽象類, 然后當(dāng)我們調(diào)用相關(guān)方法的時(shí)候?qū)嶋H執(zhí)行的是Apple這個(gè)類的方法, 而不是Fruit的方法。

何必要多此一舉呢? 為什么要把一個(gè)子類的實(shí)例賦值給一個(gè)父類呢? 沒必要啊,直接一點(diǎn)多好:

  1. Apple a = new Apple(); 
  2. a.getPrice() --> 返回5.0f 
  3. a.getName() --> 返回 “Apple” 

沒錯(cuò),在這個(gè)小例子中, 我們完全可以這么干。

2.沒有多態(tài)的世界

現(xiàn)在假設(shè)編程世界沒有多態(tài), 我們沒法使用它。 對(duì)于上面的例子, 引入兩個(gè)新的類, 橙子(Orange) 和購(gòu)物車(ShopCart):

注意: Apple 和Orange 沒有共同的父類Fruit了, 并且Orange類獲取價(jià)格的方法是getUnitPrice(), 和Apple類的不一樣。

購(gòu)物車可以添加蘋果和橙子, 并且有個(gè)計(jì)算總價(jià)格的方法 : calculateTotalPrice。

在該方法中, 需要判斷每個(gè)對(duì)象是什么類型, 然后調(diào)用不同的方法。

要是新加一個(gè)香蕉類, 不但需要新加一個(gè)addBanana()的方法, 還得小心的修改計(jì)算總價(jià)的方法: 找到相應(yīng)的地方添加一個(gè)分支專門處理香蕉類。

是不是很痛苦?

3.請(qǐng)回多態(tài)

現(xiàn)在應(yīng)該能看出抽象類Fruit的作用了, 如果Apple, Orange 都實(shí)現(xiàn)了Fruit, 那購(gòu)物車就變的異常簡(jiǎn)單:

現(xiàn)在想一想: 為什么購(gòu)物車類能變得簡(jiǎn)單而清晰?

因?yàn)镾hopCart 面對(duì)的是一個(gè)抽象的概念: Fruit , 而不是具體的實(shí)現(xiàn) Apple, Orange, Banana...

它不用關(guān)心那些煩人的細(xì)節(jié), 只要針對(duì)Fruit編程就好。

為什么ShopCart能對(duì)Fruit這個(gè)抽象的“接口” 進(jìn)行編程呢? 背后肯定是多態(tài)在起作用了! 原來(lái)你在這里 !

這就是我想表達(dá)的 說(shuō)“空話", 做實(shí)事的意思, 抽象類/接口實(shí)際上在說(shuō)“空話”, 而真正做實(shí)際事情的是具體的實(shí)現(xiàn)類。

但是想說(shuō)“空話”也得有個(gè)載體才行,這個(gè)載體就是抽象的概念 Fruit !

4.思考

現(xiàn)在我們應(yīng)該知道抽象的威力了, 一個(gè)好的抽象(Fruit) 能夠讓代碼變的無(wú)比簡(jiǎn)潔。

《設(shè)計(jì)模式》一書中反復(fù)強(qiáng)調(diào)的 “針對(duì)接口編程,而不是實(shí)現(xiàn)編程” 就是這個(gè)意思。

可是問(wèn)題來(lái)了: 怎么才能抽象出好的概念呢?

上面的例子很簡(jiǎn)單, 并且在現(xiàn)實(shí)中也有相關(guān)的術(shù)語(yǔ),所以很容易得出Fruit這樣的概念。

如果是一個(gè)大系統(tǒng), 那就會(huì)難的多, 很多時(shí)候需要抽象出的概念在現(xiàn)實(shí)中并沒有對(duì)應(yīng)物, 這就很考驗(yàn)設(shè)計(jì)者的功力了, 也是面向?qū)ο蠓治龊驮O(shè)計(jì)比較難的地方 , 需要經(jīng)驗(yàn)的積累和大量的實(shí)踐才行。

【本文為51CTO專欄作者“劉欣”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過(guò)作者微信公眾號(hào)coderising獲取授權(quán)】

戳這里,看該作者更多好文

責(zé)任編輯:武曉燕 來(lái)源: 51CTO專欄
相關(guān)推薦

2012-01-10 10:46:07

寬帶假寬帶

2014-06-25 09:11:48

技術(shù)

2019-01-09 08:42:18

2019-07-09 13:37:14

VR按摩療養(yǎng)院

2022-05-05 09:14:41

AlpineDocker鏡像開發(fā)

2022-04-11 15:10:34

微服務(wù)遷移goroutine

2023-01-12 11:56:13

施耐德電氣UPS

2009-08-17 15:52:42

C#多態(tài)

2022-02-07 09:05:00

GitHub功能AI

2011-08-29 10:41:58

信息化建設(shè)Quest

2021-12-29 20:31:40

C++多態(tài)指針

2019-08-06 15:42:22

華為

2012-04-27 14:18:45

云計(jì)算中國(guó)概念

2016-02-19 16:11:54

數(shù)據(jù)科學(xué)家數(shù)據(jù)科學(xué)大數(shù)據(jù)

2015-04-07 12:25:49

馬化騰產(chǎn)品設(shè)計(jì)

2014-07-08 09:35:45

谷歌CEO喬布斯

2009-07-14 14:12:14

Javascript

2011-05-27 16:57:13

Android widget

2020-11-27 06:44:22

原子加鎖x86

2020-12-22 13:45:36

大數(shù)據(jù)可視化分析大數(shù)據(jù)認(rèn)知
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 99精品久久 | 国产欧美精品一区二区色综合朱莉 | 国产精品久久久久久久久久久久久 | 在线午夜| 欧美日韩久久久 | 最新av在线播放 | 欧美一a一片一级一片 | a免费视频| 在线免费观看亚洲 | 日韩在线免费播放 | 日韩一区和二区 | 91精品国产色综合久久 | 自拍偷拍中文字幕 | 九九热在线视频 | 久久久片| 中国大陆高清aⅴ毛片 | 免费黄色日本 | 免费毛片网站在线观看 | 91在线区 | 欧美一区二区三区视频 | 日本精品久久 | 日本精品久久 | 特黄视频| 情侣黄网站免费看 | www.99热.com| 日韩在线三级 | 成人亚洲网 | 免费a级毛片在线播放 | 成人免费观看男女羞羞视频 | 久久久www成人免费精品张筱雨 | 中文字幕日韩专区 | 国久久| 中文字幕高清 | 欧美精品一区久久 | 久久精彩视频 | 久久久黑人| 久久精品国产一区 | 精精国产xxxx视频在线播放 | 精品欧美激情在线观看 | 在线精品亚洲欧美日韩国产 | av黄色片在线观看 |