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