一、定義
多態(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)用的方法。