国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

強(qiáng)制類型轉(zhuǎn)換

2019-11-11 01:32:09
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

java中強(qiáng)制類型轉(zhuǎn)換分為基本數(shù)據(jù)類型和引用數(shù)據(jù)類型兩種,這里我們討論的后者,也就是引用數(shù)據(jù)類型的強(qiáng)制類型轉(zhuǎn)換。

       在Java中由于繼承和向上轉(zhuǎn)型,子類可以非常自然地轉(zhuǎn)換成父類,但是父類轉(zhuǎn)換成子類則需要強(qiáng)制轉(zhuǎn)換。因?yàn)樽宇悡碛斜雀割惛嗟膶傩浴⒏鼜?qiáng)的功能,所以父類轉(zhuǎn)換為子類需要強(qiáng)制。那么,是不是只要是父類轉(zhuǎn)換為子類就會(huì)成功呢?其實(shí)不然,他們之間的強(qiáng)制類型轉(zhuǎn)換是有條件的。

       當(dāng)我們用一個(gè)類型的構(gòu)造器構(gòu)造出一個(gè)對(duì)象時(shí),這個(gè)對(duì)象的類型就已經(jīng)確定的,也就說(shuō)它的本質(zhì)是不會(huì)再發(fā)生變化了。在Java中我們可以通過(guò)繼承、向上轉(zhuǎn)型的關(guān)系使用父類類型來(lái)引用它,這個(gè)時(shí)候我們是使用功能較弱的類型引用功能較強(qiáng)的對(duì)象,這是可行的。但是將功能較弱的類型強(qiáng)制轉(zhuǎn)功能較強(qiáng)的對(duì)象時(shí),就不一定可以行了。

       舉個(gè)例子來(lái)說(shuō)明。比如系統(tǒng)中存在Father、Son兩個(gè)對(duì)象。首先我們先構(gòu)造一個(gè)Son對(duì)象,然后用一個(gè)Father類型變量引用它:

       Father father = new Son();

       在這里Son 對(duì)象實(shí)例被向上轉(zhuǎn)型為father了,但是請(qǐng)注意這個(gè)Son對(duì)象實(shí)例在內(nèi)存中的本質(zhì)還是Son類型的,只不過(guò)它的能力臨時(shí)被消弱了而已,如果我們想變強(qiáng)怎么辦?將其對(duì)象類型還原!

       Son son = (Son)father;

       這條語(yǔ)句是可行的,其實(shí)father引用仍然是Father類型的,只不過(guò)是將它的能力加強(qiáng)了,將其加強(qiáng)后轉(zhuǎn)交給son引用了,Son對(duì)象實(shí)例在son的變量的引用下,恢復(fù)真身,可以使用全部功能了。

       前面提到父類強(qiáng)制轉(zhuǎn)換成子類并不是總是成功,那么在什么情況下它會(huì)失效呢?

       當(dāng)引用類型的真實(shí)身份是父類本身的類型時(shí),強(qiáng)制類型轉(zhuǎn)換就會(huì)產(chǎn)生錯(cuò)誤。例如:

       Father father = new Father();

       Son son = (Son) father;

       這個(gè)系統(tǒng)會(huì)拋出ClassCastException異常信息。

    所以編譯器在編譯時(shí)只會(huì)檢查類型之間是否存在繼承關(guān)系,有則通過(guò);而在運(yùn)行時(shí)就會(huì)檢查它的真實(shí)類型,是則通過(guò),否則拋出ClassCastException異常。

   所以在繼承中,子類可以自動(dòng)轉(zhuǎn)型為父類,但是父類強(qiáng)制轉(zhuǎn)換為子類時(shí)只有當(dāng)引用類型真正的身份為子類時(shí)才會(huì)強(qiáng)制轉(zhuǎn)換成功,否則失敗。


上一篇:實(shí)現(xiàn)多重繼承

下一篇:JDBC

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 怀来县| 商洛市| 泽库县| 永顺县| 同仁县| 乡城县| 盐城市| 嘉善县| 兰州市| 汉中市| 当雄县| 南投市| 鄂温| 峨边| 泸水县| 莆田市| 南江县| 武清区| 公安县| 乌苏市| 定安县| 金川县| 娄底市| 陆川县| 张家港市| 清镇市| 清水县| 虹口区| 红安县| 威远县| 南漳县| 常山县| 长岭县| 甘谷县| 毕节市| 平舆县| 福泉市| 台州市| 上虞市| 连平县| 明星|