理解Java多態(tài)性

面向?qū)ο蟮娜蠡咎卣魇牵悍庋b、繼承、多態(tài)寂恬。

封裝

封裝為私有變量創(chuàng)建公共方法,使得外部可以調(diào)用莱没。這樣做的好處是實現(xiàn)了訪問控制初肉,讓客戶端程序員無法觸及不應(yīng)該觸及的部分(private),而內(nèi)創(chuàng)建者不用擔(dān)心由于自己的修改使得客戶端程序員產(chǎn)生影響(public 調(diào)用)饰躲。

繼承

在創(chuàng)建一個新類后牙咏,即使另外一個新類與其具有相似的功能,還必須重新創(chuàng)建一個新類嘹裂。如果我們以現(xiàn)有的類為基礎(chǔ)眠寿,將其方法和屬性復(fù)制到新類就好了,這就是繼承焦蘑。子類繼承父類的方法和屬性盯拱。在關(guān)于繼承可能引發(fā)的某種爭論:繼承應(yīng)該只繼承父類的方法(而不添加在基類中沒有的新方法)嗎?在父類的基礎(chǔ)上例嘱,可以添加新的接口元素狡逢,這樣就擴展了接口,雖然此類型還是可以替代基類拼卵,但不很完全奢浑,我們稱之為is-like-a(像一個)關(guān)系;另外腋腮,若子類只是覆蓋(重寫雀彼,overriding)父類的方法,被稱為純粹替代即寡,是一種最為理想的方法徊哑,導(dǎo)出類和基類的關(guān)系成為is-a (是一個)關(guān)系。

多態(tài)分為兩種:

1.編譯時多態(tài):方法的重載

2.運行時多態(tài):AVA運行時系統(tǒng)根據(jù)調(diào)用該方法的實例的類型來決定選擇調(diào)用哪個方法則被稱為運行時多態(tài)聪富。(我們平時說得多的事運行時多態(tài)莺丑,所以多態(tài)主要也是指運行時多態(tài))

什么是多態(tài)

面向?qū)ο蟮娜筇匦?/b>:封裝、繼承、多態(tài)梢莽。從一定角度來看萧豆,封裝和繼承幾乎都是為多態(tài)而準備的。這是我們最后一個概念昏名,也是最重要的知識點涮雷。

多態(tài)的定義:指允許不同類的對象對同一消息做出響應(yīng)。即同一消息可以根據(jù)發(fā)送對象的不同而采用多種不同的行為方式轻局。(發(fā)送消息就是函數(shù)調(diào)用)

實現(xiàn)多態(tài)的技術(shù)稱為:動態(tài)綁定(dynamic binding)洪鸭,是指在執(zhí)行期間判斷所引用對象的實際類型,根據(jù)其實際的類型調(diào)用其相應(yīng)的方法嗽交。

多態(tài)的作用:消除類型之間的耦合關(guān)系卿嘲。

現(xiàn)實中,關(guān)于多態(tài)的例子不勝枚舉夫壁。比方說按下 F1 鍵這個動作拾枣,如果當(dāng)前在 Flash 界面下彈出的就是 AS 3 的幫助文檔;如果當(dāng)前在 Word 下彈出的就是 Word 幫助盒让;在 Windows 下彈出的就是 Windows 幫助和支持梅肤。同一個事件發(fā)生在不同的對象上會產(chǎn)生不同的結(jié)果。

多態(tài)存在的三個必要條件?一邑茄、要有繼承姨蝴;?二、要有重寫肺缕;?三左医、父類引用指向子類對象。

class A ...{

? ? ? ? public String show(D obj)...{?

? ? ? ? ? ? ? ? return ("A and D");?

? ? ? ? }?

? ? ? ? public String show(A obj)...{?

? ? ? ? ? ? ? ? return ("A and A");?

? ? ? ? }?

}?

class B extends A...{?

? ? ? ? public String show(B obj)...{?

? ? ? ? ? ? ? ? return ("B and B");?

? ? ? ? }?

? ? ? ? public String show(A obj)...{?

? ? ? ? ? ? ? ? return ("B and A");?

? ? ? ? }?

}?

class C extends B...{}?

class D extends B...{}

? ? ? ?A a1 = new A();

? ? ? ? A a2 = new B();?

? ? ? ? B b = new B();?

? ? ? ? C c = new C();?

? ? ? ? D d = new D();?

? ? ? ? System.out.println(a1.show(b));? ①? //a1指向的類時A

? ? ? ? System.out.println(a1.show(c));? ②?

? ? ? ? System.out.println(a1.show(d));? ③?

? ? ? ? System.out.println(a2.show(b));? ④? //a2指向的類時B同木,B類直接超類是A而且重寫了show(A OBJ)浮梢。所以當(dāng)傳入的參數(shù)是B對象的時候,調(diào)用B類從寫的方法彤路。

? ? ? ? System.out.println(a2.show(c));? ⑤?

? ? ? ? System.out.println(a2.show(d));? ⑥?

? ? ? ? System.out.println(b.show(b));? ? ⑦?

? ? ? ? System.out.println(b.show(c));? ? ⑧? //b指向的類是B秕硝,而C,D類的直接超類是B所以調(diào)用的是show(B OBJ)。

? ? ? ? System.out.println(b.show(d));? ? ⑨

① A and A

②? A and A

③? A and D

④? B and A

⑤? B and A

⑥? A and D

⑦? B and B

⑧? B and B

⑨? A and D

資料來源

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末洲尊,一起剝皮案震驚了整個濱河市远豺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌坞嘀,老刑警劉巖躯护,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異姆吭,居然都是意外死亡榛做,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門内狸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來检眯,“玉大人,你說我怎么就攤上這事昆淡∶倘常” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵昂灵,是天一觀的道長避凝。 經(jīng)常有香客問我,道長眨补,這世上最難降的妖魔是什么管削? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮撑螺,結(jié)果婚禮上含思,老公的妹妹穿的比我還像新娘。我一直安慰自己甘晤,他們只是感情好含潘,可當(dāng)我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著线婚,像睡著了一般遏弱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上塞弊,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天漱逸,我揣著相機與錄音,去河邊找鬼游沿。 笑死饰抒,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的奏候。 我是一名探鬼主播循集,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蔗草!你這毒婦竟也來了咒彤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤咒精,失蹤者是張志新(化名)和其女友劉穎镶柱,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體模叙,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡歇拆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片故觅。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡厂庇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出输吏,到底是詐尸還是另有隱情权旷,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布贯溅,位于F島的核電站拄氯,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏它浅。R本人自食惡果不足惜译柏,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望姐霍。 院中可真熱鬧鄙麦,春花似錦、人聲如沸邮弹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽腌乡。三九已至盟劫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間与纽,已是汗流浹背侣签。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留急迂,地道東北人影所。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像僚碎,于是被迫代替她去往敵國和親猴娩。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Win7下如何打開DOS控制臺勺阐? a:開始--所有程序--附件--命令提示符 b:開始--搜索程序和文件--cmd...
    逍遙嘆6閱讀 1,599評論 4 12
  • 最近在復(fù)習(xí)java基礎(chǔ)卷中,在多態(tài)上面有一些不太明白的地方,故記錄下來供自己時時復(fù)習(xí)查閱鞏固渊抽。 概述 我們都知道面向?qū)?..
    咕嚕__閱讀 304評論 0 0
  • 小編費力收集:給你想要的面試集合 1.C++或Java中的異常處理機制的簡單原理和應(yīng)用蟆豫。 當(dāng)JAVA程序違反了JA...
    八爺君閱讀 4,592評論 1 114
  • 已是認識老公的第五年。聊聊我身邊的這個絕對的經(jīng)濟適用男懒闷。 一.經(jīng)濟男 1.開銷少 老公不抽煙十减,不喝酒栈幸,不泡吧,沒有...
    海娜川閱讀 712評論 2 5
  • 在廚房做著羊肉湯帮辟,他吹著葫蘆絲在廚房陪著速址;你出行不便,有車不會開织阅,他永遠是不失職的司機壳繁;你工資沒他高震捣,但永遠會把你...
    透過霧看天閱讀 99評論 0 0