摘要:如果編譯時(shí)類型和運(yùn)行時(shí)類型不一致,就可能出現(xiàn)所謂的多態(tài)。上面代碼中,引用變量比較特殊,它的編譯時(shí)類型是而運(yùn)行時(shí)類型是當(dāng)調(diào)用該引用變量的方法時(shí),實(shí)際執(zhí)行的是類中覆蓋后的方法,這就可能出現(xiàn)多態(tài)了。
Java引用變量有兩個(gè)類型,一個(gè)是編譯時(shí)類型,一個(gè)是運(yùn)行時(shí)類型。
編譯時(shí)類型由聲明該變量時(shí)使用的類型決定,運(yùn)行時(shí)類型由實(shí)際賦給該變量的對(duì)象決定。
如果編譯時(shí)類型和運(yùn)行時(shí)類型不一致,就可能出現(xiàn)所謂的多態(tài)。
BaseClass testObj = new SubClass(); testObj.test();
上面代碼中,引用變量比較特殊,它的編譯時(shí)類型是BaseClass,而運(yùn)行時(shí)類型是SubClass,當(dāng)調(diào)用該引用變量的test()方法時(shí),實(shí)際執(zhí)行的是SubClass類中覆蓋后的test()方法,這就可能出現(xiàn)多態(tài)了。
因?yàn)樽宇惼鋵?shí)是一種特殊的父類,因此java允許把一個(gè)子類對(duì)象直接賦給一個(gè)父類引用對(duì)象,無(wú)需任何類型轉(zhuǎn)換,或者被稱為向上轉(zhuǎn)型,向上轉(zhuǎn)型由系統(tǒng)自動(dòng)完成。
上面testObj引用變量的編譯時(shí)類型是BaseClass,而運(yùn)行時(shí)類型是SubClass,當(dāng)運(yùn)行時(shí)調(diào)用該引用變量的方法時(shí),其方法和行為總是表現(xiàn)出子類方法的行為特征,而不是父類方法的行為特征,這就可能出現(xiàn):相同類型的變量、調(diào)用同一個(gè)方法時(shí)呈現(xiàn)出不同的行為特征,這就是多態(tài)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/68519.html
摘要:概念所謂多態(tài),就是指一個(gè)引用變量類型在不同的情況下的多種狀態(tài)。需進(jìn)行強(qiáng)制轉(zhuǎn)換有風(fēng)險(xiǎn),最好使用進(jìn)行判斷。繼承在多態(tài)中必須存在有繼承關(guān)系的子類和父類。在中有兩種形式可以實(shí)現(xiàn)多態(tài)繼承和接口。 概念 所謂多態(tài),就是指一個(gè)引用變量(類型)在不同的情況下的多種狀態(tài)。也可以理解為,多態(tài)是指通過(guò)指向父類的指針,來(lái)調(diào)用在不同子類中實(shí)現(xiàn)的方法。多態(tài)性是對(duì)象多種表現(xiàn)形式的體現(xiàn) 多態(tài)性嚴(yán)格來(lái)說(shuō)有兩種描述形式:...
摘要:當(dāng)我們對(duì)一些函數(shù)發(fā)出調(diào)用的消息時(shí),這些函數(shù)會(huì)返回不同的執(zhí)行結(jié)果,這是多態(tài)性的一種體現(xiàn),也是很多設(shè)計(jì)模式在中可以用高階函數(shù)來(lái)代替實(shí)現(xiàn)的原因。 PS:上一篇文章發(fā)表之后,很多朋友關(guān)注了本人的思否和掘金的博客,雖然關(guān)注的朋友還有有限,但足夠讓我把自己在技術(shù)上的問(wèn)題積累分享給大家,也希望大家能夠喜歡,同時(shí)能動(dòng)一動(dòng)手指,給一顆心(贊),博主會(huì)持續(xù)更新下去 多態(tài) 本文是《javascript設(shè)計(jì)模...
摘要:中的多態(tài)引用的多態(tài)父類的引用是可以指向子類對(duì)象報(bào)錯(cuò)方法多態(tài)動(dòng)物具有吃的能力狗具有吃肉的能力狗具有看門(mén)的能力父類的引用是可以指向子類對(duì)象報(bào)錯(cuò) java中的多態(tài) showImg(https://segmentfault.com/img/bVbnDYA?w=1138&h=612); showImg(https://segmentfault.com/img/bVbnD6B?w=344&h=17...
摘要:在面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言中,多態(tài)是繼數(shù)據(jù)抽象和繼承之后的第三種基本特征。 在面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言中,多態(tài)是繼數(shù)據(jù)抽象和繼承之后的第三種基本特征。 1.再論向上轉(zhuǎn)型 多態(tài)作用:消除類型之間的耦合關(guān)系. 2.轉(zhuǎn)機(jī) 綁定:將一個(gè)方法調(diào)用同一個(gè)方法主體關(guān)聯(lián)起來(lái). 前期綁定:在程序執(zhí)行前就進(jìn)行綁定(面向過(guò)程語(yǔ)言默認(rèn)綁定方式). 后期綁定:也叫動(dòng)態(tài)綁定或運(yùn)行時(shí)綁定,在運(yùn)行時(shí)根據(jù)對(duì)象的類型進(jìn)行綁...
摘要:為什么不是面向?qū)ο蟛皇敲嫦驅(qū)ο螅驗(yàn)樗瑐€(gè)原始數(shù)據(jù)類型,例如。自定義類加載器繼承的自定義類加載器。可以像下面這樣指定參數(shù)面試題面向?qū)ο螅惣虞d器,基礎(chǔ)概念它們的關(guān)系如下啟動(dòng)類加載器,實(shí)現(xiàn),沒(méi)有父類。自定義類加載器,父類加載器為。 1. 為什么說(shuō)Java是一門(mén)平臺(tái)無(wú)關(guān)語(yǔ)言? 平臺(tái)無(wú)關(guān)實(shí)際的含義是一次編寫(xiě)到處運(yùn)行。Java 能夠做到是因?yàn)樗淖止?jié)碼(byte code)可以運(yùn)行在任何操作...
閱讀 2470·2023-04-25 21:41
閱讀 1647·2021-09-22 15:17
閱讀 1921·2021-09-22 10:02
閱讀 2433·2021-09-10 11:21
閱讀 2569·2019-08-30 15:53
閱讀 996·2019-08-30 15:44
閱讀 946·2019-08-30 13:46
閱讀 1125·2019-08-29 18:36