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