第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

引用強制類型轉(zhuǎn)換的意義

為什么要進行強制類型轉(zhuǎn)換 ? 有什么用???

正在回答

1 回答

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

?????? 在Java中由于繼承和向上轉(zhuǎn)型,子類可以非常自然地轉(zhuǎn)換成父類,但是父類轉(zhuǎn)換成子類則需要強制轉(zhuǎn)換。因為子類擁有比父類更多的屬性、更強的功能,所以父類轉(zhuǎn)換為子類需要強制。那么,是不是只要是父類轉(zhuǎn)換為子類就會成功呢?其實不然,他們之間的強制類型轉(zhuǎn)換是有條件的。

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

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

?????? Father father = new Son();

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

?????? Son son = (Son)father;

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

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

?????? 當引用類型的真實身份是父類本身的類型時,強制類型轉(zhuǎn)換就會產(chǎn)生錯誤。例如:

?????? Father father = new Father();

?????? Son son = (Son) father;

?????? 這個系統(tǒng)會拋出ClassCastException異常信息。

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

???所以在繼承中,子類可以自動轉(zhuǎn)型為父類,但是父類強制轉(zhuǎn)換為子類時只有當引用類型真正的身份為子類時才會強制轉(zhuǎn)換成功,否則失敗


1 回復 有任何疑惑可以回復我~
#1

qq_乘風破浪_16

哥們,你前面是不是說反了,因為子類比父類更多的xxx? 說通俗點,小轉(zhuǎn)大就是自動轉(zhuǎn)化,大轉(zhuǎn)小才需要強制轉(zhuǎn)化,既然是向下類型轉(zhuǎn)化,那子類怎么可能比父類多呢
2017-11-27 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Java入門第二季 升級版
  • 參與學習       531132    人
  • 解答問題       6326    個

課程升級!以終為始告別枯燥,在開發(fā)和重構(gòu)中體會Java面向?qū)ο缶幊痰膴W妙

進入課程

引用強制類型轉(zhuǎn)換的意義

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號