多態(tài)消息的理解

對象有一個奇妙的機制就是多態(tài)消息。

剛看到這句話時就一個想法:什么鬼惊窖?后來才知道其實就是多態(tài)的應用览徒。

那么多態(tài)消息是什么呢?

消息是一個術語:

指一個對象調用另一個對象的成員函數(c++)或者方法(java)苫拍。

多態(tài)機制有兩種:

一種是靜態(tài)多態(tài),即編譯時就已經確定旺隙,運行時調用的是已經確定的方法(消息)绒极,常見的就是重載:方法名相同,參數不同蔬捷。

一種是動態(tài)多態(tài)垄提,即編譯時不確定調用哪個方法,一直延遲到運行到那個地方才能確定周拐,因此多態(tài)方法又叫延遲方法铡俐。

多態(tài)有兩種實現(xiàn)方式:

一種是子類繼承父類。

一種是類實現(xiàn)接口妥粟。

兩種方法的核心目的都是以一個消息(調用一個方法方法)來實現(xiàn)運行時的不同效果审丘,方式為:對父類方法的復寫或對接口方法的實現(xiàn)。

因此總結出使用多態(tài)有一個法則:

聲明的總是父類型或者接口類型勾给,創(chuàng)建的時實際類型滩报。舉例來說用多態(tài)創(chuàng)建一個arraylist,就應該用這樣的語句

List list = new ArrayList()播急,

而不是

ArrayList list = new ArrayList()脓钾。

定義方法參數也應該優(yōu)先使用父類類型或接口類型,比如一個方法定義參數是list數組桩警,那就應該用List而不是ArrayList可训,這樣才符合多態(tài)機制。

為什么捶枢?因為這樣聲明最大的好處在于結構的靈活性:假如某一天我認為ArrayList的特性無法滿足我的需求沉噩,需要用LinkedList來代替它,那么只需要把對象創(chuàng)建的地方new ArrayList()改為new LinkedLIst()即可柱蟀,其他代碼一概不動川蒙。不然可能就要改變這個函數的傳參或者重載這個函數,將大大增加代碼量和結構的臃腫长已。

所以反過來就可以得到多態(tài)的作用:

對結構和設計的復用畜眨。定義功能和組件時定義接口,實現(xiàn)留在之后的流程中术瓮。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末康聂,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子胞四,更是在濱河造成了極大的恐慌恬汁,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,331評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辜伟,死亡現(xiàn)場離奇詭異氓侧,居然都是意外死亡脊另,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,372評論 3 398
  • 文/潘曉璐 我一進店門约巷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來偎痛,“玉大人,你說我怎么就攤上這事独郎〔嚷螅” “怎么了?”我有些...
    開封第一講書人閱讀 167,755評論 0 360
  • 文/不壞的土叔 我叫張陵氓癌,是天一觀的道長谓谦。 經常有香客問我,道長贪婉,這世上最難降的妖魔是什么反粥? 我笑而不...
    開封第一講書人閱讀 59,528評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮谓松,結果婚禮上星压,老公的妹妹穿的比我還像新娘。我一直安慰自己鬼譬,他們只是感情好娜膘,可當我...
    茶點故事閱讀 68,526評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著优质,像睡著了一般竣贪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上巩螃,一...
    開封第一講書人閱讀 52,166評論 1 308
  • 那天演怎,我揣著相機與錄音,去河邊找鬼避乏。 笑死爷耀,一個胖子當著我的面吹牛,可吹牛的內容都是我干的拍皮。 我是一名探鬼主播歹叮,決...
    沈念sama閱讀 40,768評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼铆帽!你這毒婦竟也來了咆耿?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,664評論 0 276
  • 序言:老撾萬榮一對情侶失蹤爹橱,失蹤者是張志新(化名)和其女友劉穎萨螺,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 46,205評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡慰技,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,290評論 3 340
  • 正文 我和宋清朗相戀三年椭盏,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惹盼。...
    茶點故事閱讀 40,435評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡庸汗,死狀恐怖惫确,靈堂內的尸體忽然破棺而出手报,到底是詐尸還是另有隱情,我是刑警寧澤改化,帶...
    沈念sama閱讀 36,126評論 5 349
  • 正文 年R本政府宣布掩蛤,位于F島的核電站,受9級特大地震影響陈肛,放射性物質發(fā)生泄漏揍鸟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,804評論 3 333
  • 文/蒙蒙 一句旱、第九天 我趴在偏房一處隱蔽的房頂上張望阳藻。 院中可真熱鬧,春花似錦谈撒、人聲如沸腥泥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,276評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛔外。三九已至,卻和暖如春溯乒,著一層夾襖步出監(jiān)牢的瞬間夹厌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工裆悄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留矛纹,地道東北人。 一個月前我還...
    沈念sama閱讀 48,818評論 3 376
  • 正文 我出身青樓光稼,卻偏偏與公主長得像或南,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子钟哥,可洞房花燭夜當晚...
    茶點故事閱讀 45,442評論 2 359

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法迎献,類相關的語法,內部類的語法腻贰,繼承相關的語法吁恍,異常的語法,線程的語...
    子非魚_t_閱讀 31,660評論 18 399
  • 1.import static是Java 5增加的功能,就是將Import類中的靜態(tài)方法,可以作為本類的靜態(tài)方法來...
    XLsn0w閱讀 1,233評論 0 2
  • 面向對象主要針對面向過程冀瓦。 面向過程的基本單元是函數伴奥。 什么是對象:EVERYTHING IS OBJECT(萬物...
    sinpi閱讀 1,057評論 0 4
  • (一)Java部分 1、列舉出JAVA中6個比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨云閱讀 7,114評論 0 62
  • 我坐在小婷的床邊靜靜地看著她翼闽,這個讓我愿意為之付出一切的女人這一刻就這么安靜的躺在病床上拾徙。此刻的她已不能再像以前一...
    闌塵閱讀 459評論 0 4