多態(tài)

一、定義

多態(tài)是面向?qū)ο蟮暮诵摹?/p>

也叫動(dòng)態(tài)綁定,是指在執(zhí)行期間(而非編譯期間)判斷所引用對(duì)象的實(shí)際類型,并根據(jù)引用對(duì)象的實(shí)際類型來(lái)調(diào)用相應(yīng)的方法。

二、必要條件

1.必須有繼承;

2.子類必須重寫(xiě)父類的方法;

3.必須有父類引用指向子類對(duì)象。

三、內(nèi)存圖解析

1.要點(diǎn)說(shuō)明:

a. new子類對(duì)象時(shí),子類對(duì)象中會(huì)包著一個(gè)父類對(duì)象;

b. lady對(duì)象中有個(gè)Animal類型的變量,實(shí)際在new lady,并且為其設(shè)置cat值時(shí),該變量會(huì)指向cat對(duì)象。

c. 在調(diào)用lady的pet的“叫”方法時(shí),實(shí)際所有的方法都在code seg區(qū)域,而pet對(duì)象中有個(gè)指針會(huì)判斷該引用的實(shí)際類型,并指向該類型對(duì)象的方法,即動(dòng)態(tài)綁定。

圖片發(fā)自簡(jiǎn)書(shū)App


圖片發(fā)自簡(jiǎn)書(shū)App


四、意義

多態(tài)是面向?qū)ο蟮暮诵?,極大的提高了可擴(kuò)展性(有變動(dòng)時(shí),不用修改代碼)。

例子中,lady的pet是Animal類型,調(diào)用pet的“叫”方法時(shí),不用判斷Animal的實(shí)際類型,來(lái)決定調(diào)用的方法,多態(tài)機(jī)制會(huì)自動(dòng)判斷實(shí)際類型來(lái)選擇調(diào)用的方法。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,681評(píng)論 1 32
  • 第二部分 自動(dòng)內(nèi)存管理機(jī)制 第二章 java內(nèi)存異常與內(nèi)存溢出異常 運(yùn)行數(shù)據(jù)區(qū)域 程序計(jì)數(shù)器:當(dāng)前線程所執(zhí)行的字節(jié)...
    小明oh閱讀 1,298評(píng)論 0 2
  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學(xué)習(xí)記錄文檔,今天18年5月份再次想寫(xiě)文章,發(fā)現(xiàn)簡(jiǎn)書(shū)還為我保存起的...
    Jenaral閱讀 3,172評(píng)論 2 9
  • 《深入理解Java虛擬機(jī)》筆記_第一遍 先取看完這本書(shū)(JVM)后必須掌握的部分。 第一部分 走近 Java 從傳...
    xiaogmail閱讀 5,481評(píng)論 1 34
  • 公司的項(xiàng)目是五六年的老項(xiàng)目了,用的還是MRC,也沒(méi)用cocoapods,哈哈~,cocoapods集成還是很方便的...
    舒耀閱讀 3,336評(píng)論 1 1

友情鏈接更多精彩內(nèi)容