"引用"與多態(tài)的關(guān)系筆試經(jīng)驗(yàn)
引用是除指針外另一個(gè)可以產(chǎn)生多態(tài)效果的手段。這意味著,一個(gè)基類(lèi)的引用可以指向它的派生類(lèi)實(shí)例。
例
Class A; Class B : Class A{…}; B b; A& ref = b;
拓展閱讀:
以現(xiàn)實(shí)情況舉一個(gè)例子說(shuō)明多態(tài)的應(yīng)用:
假設(shè)有一個(gè)“小提琴演奏者”類(lèi),有一個(gè)“鋼琴演奏者”類(lèi),還有一個(gè)“薩克斯演奏者”類(lèi)。它們都是彈奏樂(lè)器的,都繼承自“樂(lè)器演奏者”類(lèi)。“樂(lè)器演奏者”類(lèi)有個(gè)方法叫做“演奏”。三種不同的子類(lèi)有不同的“演奏”方法實(shí)現(xiàn)(拉、彈、吹)。
那么指揮家如果要指揮一個(gè)交響樂(lè),那么有兩個(gè)辦法:
一,分別說(shuō)“小提琴拉起來(lái)”、“鋼琴?gòu)椘饋?lái)”、“薩克斯吹起來(lái)”
二,只需要說(shuō)一句“樂(lè)器們都演奏起來(lái)”
顯然第一種方法是很笨拙的。因?yàn)橹笓]家不需要知道每種樂(lè)器演奏者具體怎么樣去演奏樂(lè)器(是吹還是彈還是拉),他只需要指揮就可以了。因此應(yīng)當(dāng)采用第二種做法。
那么如何實(shí)現(xiàn)第二種做法呢?那就是把三種樂(lè)器演奏者子類(lèi)看成是“樂(lè)器演奏者”父類(lèi)。指揮家只需要調(diào)用“演奏”方法就可以了。至于具體是怎么去演奏,指揮家是不管的。
雖然代碼上寫(xiě)的是把具體的'演奏者子類(lèi)看成了父類(lèi),調(diào)用的是父類(lèi)的“演奏”方法,但是因?yàn)樽宇?lèi)繼承了父類(lèi)的“演奏”方法并且重寫(xiě)為更加具體的實(shí)現(xiàn)(拉或者彈或者吹),創(chuàng)建實(shí)例的時(shí)候創(chuàng)建的是子類(lèi)的實(shí)例(構(gòu)造方法是子類(lèi)的,只不過(guò)看成是父類(lèi)去用),所以實(shí)際執(zhí)行的時(shí)候會(huì)去調(diào)用子類(lèi)的“演奏”方法。因此,究竟是該拉還是該彈還是該吹,指揮家不必在意,這個(gè)判斷由java虛擬機(jī)完成了。
這個(gè)就是一個(gè)多態(tài)的應(yīng)用。
再擴(kuò)展一下,假設(shè)以后又多了一種樂(lè)器,架子鼓也來(lái)了。同樣,架子鼓也是一種樂(lè)器。如果不用多態(tài),那么指揮家的代碼也又要改了,就要說(shuō)“架子鼓打起來(lái)”,而用多態(tài)的話(huà)就不用改啦,仍然是“樂(lè)器們都演奏起來(lái)”。你體會(huì)到了嗎?
【"引用"與多態(tài)的關(guān)系筆試經(jīng)驗(yàn)】相關(guān)文章:
筆試經(jīng)驗(yàn):筆試內(nèi)容準(zhǔn)備09-02
故宮筆試經(jīng)驗(yàn)05-07
銀監(jiān)會(huì)筆試經(jīng)驗(yàn)12-18
招商筆試經(jīng)驗(yàn)12-18
微軟筆試經(jīng)驗(yàn)12-07
求職筆試經(jīng)驗(yàn)12-07