3:當(dāng)程序運(yùn)行并且使用動(dòng)態(tài)綁定調(diào)用方法時(shí),虛擬機(jī)必須調(diào)用同x所指向的對(duì)象的實(shí)際類型相匹配的方法版本。
假設(shè)實(shí)際類型為D(C的子類),如果D類定義了f(String)那么該方法被調(diào)用,否則就在D的超類中搜尋方法f(String),依次類推。
JAVA 虛擬機(jī)調(diào)用一個(gè)類方法時(shí)(靜態(tài)方法),它會(huì)基于對(duì)象引用的類型(通常在編譯時(shí)可知)來選擇所調(diào)用的方法。相反,當(dāng)虛擬機(jī)調(diào)用一個(gè)實(shí)例方法時(shí),它會(huì)基于對(duì)象實(shí)際的類型(只能在運(yùn)行時(shí)得知)來選擇所調(diào)用的方法,這就是動(dòng)態(tài)綁定,是多態(tài)的一種。動(dòng)態(tài)綁定為解決實(shí)際的業(yè)務(wù)問題提供了很大的靈活性,是一種非常優(yōu)美的機(jī)制。與方法不同,在處理java類中的成員變量(實(shí)例變量和類變量)時(shí),并不是采用運(yùn)行時(shí)綁定,而是一般意義上的靜態(tài)綁定。所以在向上轉(zhuǎn)型的情況下,對(duì)象的方法可以找到子類,而對(duì)象的屬性(成員變量)還是父類的屬性(子類對(duì)父類成員變量的隱藏)。Java代碼 [java] view plain copy注:以上內(nèi)容大部分來自互聯(lián)網(wǎng),小部分是個(gè)人見解,絕非權(quán)威性言論。如有語言表達(dá)不當(dāng)或者表述不正確的地方,萬望指教。
轉(zhuǎn)自:http://blog.csdn.net/zhangjk1993/article/details/24066085
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注