洛陽(yáng)網(wǎng)站建設(shè)首選洛陽(yáng)銘信科技佛山seo按效果付費(fèi)
向上轉(zhuǎn)型:父類(lèi)引用指向子類(lèi)對(duì)象
?定義A B C D 四個(gè)類(lèi),分級(jí)繼承
對(duì)象 a 的編譯類(lèi)型是A,運(yùn)行類(lèi)型是B,A是B的父類(lèi),父類(lèi)的引用 a 指向的是B這個(gè)子類(lèi)的對(duì)象,因?yàn)閚ew的是B這個(gè)類(lèi),創(chuàng)建的也就是B這個(gè)類(lèi)的對(duì)象,這就是向上轉(zhuǎn)型
?我還可以這樣,將a指向C ,D類(lèi)的對(duì)象,也是向上轉(zhuǎn)型,只要運(yùn)行類(lèi)型是編譯類(lèi)型的子類(lèi)就可以
需要注意的是:引用 a 的編譯類(lèi)型(此時(shí)是A),是不能改變的,編譯類(lèi)型在定義引用時(shí)就已經(jīng)確定了,就像是人的親生父親,是不能改變的,一生下來(lái)就確定了,除非向下轉(zhuǎn)型,而運(yùn)行類(lèi)型就像是義父,可以改變;
向下轉(zhuǎn)型:父類(lèi)對(duì)象(編譯類(lèi)型)轉(zhuǎn)成子類(lèi)對(duì)象
向下轉(zhuǎn)型有點(diǎn)類(lèi)似于數(shù)據(jù)類(lèi)型的強(qiáng)制類(lèi)型轉(zhuǎn)換
?將a 的編譯類(lèi)型強(qiáng)制轉(zhuǎn)換為B類(lèi)型,并用一個(gè)引用aa接收
需要注意:?
1.向下轉(zhuǎn)型不能低于初始定義的運(yùn)行類(lèi)型
?在這里也就是括號(hào)里的類(lèi)不能低于B類(lèi),否則運(yùn)行時(shí)會(huì)報(bào)錯(cuò)
2.編譯類(lèi)型不能低于運(yùn)行類(lèi)型
這樣
?
或者是這樣
?
?都是錯(cuò)的
3.括號(hào)里的類(lèi)不能高于初始運(yùn)行類(lèi)型類(lèi)
?雖然不會(huì)報(bào)錯(cuò),但是此時(shí)aa的運(yùn)行類(lèi)型任然是C
?4.最低的向下轉(zhuǎn)型
?