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

說“空話”,做實事: 談談多態

開發 開發工具
多態是碼農們必須要理解理解的一個基本思想, 是面向對象的基石。

[[188436]]

1.什么是多態?

多態是碼農們必須要理解理解的一個基本思想, 是面向對象的基石。

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

多態的例子在Java里非常簡單,每個初學者都會遇到:

這沒什么啊, 不就是把Apple這個類的實例賦值給Fruit 這個抽象類, 然后當我們調用相關方法的時候實際執行的是Apple這個類的方法, 而不是Fruit的方法。

何必要多此一舉呢? 為什么要把一個子類的實例賦值給一個父類呢? 沒必要啊,直接一點多好:

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

沒錯,在這個小例子中, 我們完全可以這么干。

2.沒有多態的世界

現在假設編程世界沒有多態, 我們沒法使用它。 對于上面的例子, 引入兩個新的類, 橙子(Orange) 和購物車(ShopCart):

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

購物車可以添加蘋果和橙子, 并且有個計算總價格的方法 : calculateTotalPrice。

在該方法中, 需要判斷每個對象是什么類型, 然后調用不同的方法。

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

是不是很痛苦?

3.請回多態

現在應該能看出抽象類Fruit的作用了, 如果Apple, Orange 都實現了Fruit, 那購物車就變的異常簡單:

現在想一想: 為什么購物車類能變得簡單而清晰?

因為ShopCart 面對的是一個抽象的概念: Fruit , 而不是具體的實現 Apple, Orange, Banana...

它不用關心那些煩人的細節, 只要針對Fruit編程就好。

為什么ShopCart能對Fruit這個抽象的“接口” 進行編程呢? 背后肯定是多態在起作用了! 原來你在這里 !

這就是我想表達的 說“空話", 做實事的意思, 抽象類/接口實際上在說“空話”, 而真正做實際事情的是具體的實現類。

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

4.思考

現在我們應該知道抽象的威力了, 一個好的抽象(Fruit) 能夠讓代碼變的無比簡潔。

《設計模式》一書中反復強調的 “針對接口編程,而不是實現編程” 就是這個意思。

可是問題來了: 怎么才能抽象出好的概念呢?

上面的例子很簡單, 并且在現實中也有相關的術語,所以很容易得出Fruit這樣的概念。

如果是一個大系統, 那就會難的多, 很多時候需要抽象出的概念在現實中并沒有對應物, 這就很考驗設計者的功力了, 也是面向對象分析和設計比較難的地方 , 需要經驗的積累和大量的實踐才行。

【本文為51CTO專欄作者“劉欣”的原創稿件,轉載請通過作者微信公眾號coderising獲取授權】

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

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2012-01-10 10:46:07

寬帶假寬帶

2022-04-11 15:10:34

微服務遷移goroutine

2019-01-09 08:42:18

2019-07-09 13:37:14

VR按摩療養院

2022-05-05 09:14:41

AlpineDocker鏡像開發

2014-06-25 09:11:48

技術

2023-01-12 11:56:13

施耐德電氣UPS

2011-08-29 10:41:58

信息化建設Quest

2009-08-17 15:52:42

C#多態

2022-02-07 09:05:00

GitHub功能AI

2012-04-27 14:18:45

云計算中國概念

2021-12-29 20:31:40

C++多態指針

2019-08-06 15:42:22

華為

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

大數據可視化分析大數據認知

2015-04-07 12:25:49

馬化騰產品設計

2014-07-08 09:35:45

谷歌CEO喬布斯

2016-11-24 23:13:57

技術善于觀察善于總結
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品日韩欧美一区二区三区 | 欧美日韩精品一区 | 午夜影院视频在线观看 | 人人色视频 | 一区二区三区在线播放 | 日韩国产黄色片 | 玩丰满女领导对白露脸hd | 精品亚洲一区二区三区 | 国产在线视频在线观看 | 国产成人aⅴ | 亚洲一区二区三区在线播放 | jizz中国日本 | 久久久亚洲一区 | 成人在线视频一区 | 成人免费网站视频 | 亚洲福利在线观看 | 黑人精品欧美一区二区蜜桃 | 久久久免费电影 | 亚洲精品自在在线观看 | 国产97人人超碰caoprom | 久久er99热精品一区二区 | 日韩av在线中文字幕 | 亚洲精品v | 国产日韩欧美一区 | 九九免费在线视频 | 欧美一区二区在线观看 | 国产高清在线精品 | 久久99精品久久久久蜜桃tv | 久久草视频| 国产区在线看 | 日韩成人av在线 | 一级黄色日本片 | 亚洲高清一区二区三区 | 免费看a| 夜夜草视频| 亚洲人成人一区二区在线观看 | 丝袜美腿一区 | 天天综合成人网 | aaa综合国产 | 美美女高清毛片视频免费观看 | 激情婷婷成人 |