更新時(shí)間:2024-04-21 15:01:11 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2070次
在 Java 中,向上轉(zhuǎn)型和向下轉(zhuǎn)型都是對(duì)象類型的轉(zhuǎn)換方式。
向上轉(zhuǎn)型是將一個(gè)子類對(duì)象轉(zhuǎn)換為它的父類類型,可以理解為子類對(duì)象變?yōu)楦割悓?duì)象,也可以稱為自動(dòng)類型轉(zhuǎn)換。這種轉(zhuǎn)型是安全的,因?yàn)樽宇悓?duì)象具有父類對(duì)象的所有屬性和方法,所以可以直接賦值給父類類型的變量。語法如下:
父類類型 變量名 = new 子類類型();
Animal animal = new Dog();
這里將一個(gè) Dog 對(duì)象轉(zhuǎn)換為它的父類 Animal 類型,可以通過 Animal 對(duì)象來調(diào)用 Dog 類的方法。
向下轉(zhuǎn)型是將一個(gè)父類對(duì)象轉(zhuǎn)換為它的子類類型,需要使用強(qiáng)制類型轉(zhuǎn)換符進(jìn)行轉(zhuǎn)換,也稱為強(qiáng)制類型轉(zhuǎn)換。這種轉(zhuǎn)型是有風(fēng)險(xiǎn)的,因?yàn)楦割悓?duì)象可能并不是一個(gè)子類對(duì)象,如果進(jìn)行強(qiáng)制類型轉(zhuǎn)換會(huì)拋出 ClassCastException 異常。語法如下:
子類類型 變量名 = (子類類型) 父類類型變量名;
Animal animal = new Dog();
Dog dog = (Dog) animal;
這里將一個(gè) Animal 對(duì)象轉(zhuǎn)換為它的子類 Dog 類型,如果在運(yùn)行時(shí)發(fā)現(xiàn) animal 實(shí)際上不是一個(gè) Dog 對(duì)象,就會(huì)拋出 ClassCastException 異常。
需要注意的是,向上轉(zhuǎn)型是隱式的,不需要使用強(qiáng)制類型轉(zhuǎn)換符;而向下轉(zhuǎn)型是顯式的,需要使用強(qiáng)制類型轉(zhuǎn)換符,并且需要保證轉(zhuǎn)換的安全性。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743