在JAVA入門第二季4-2“多態(tài)中的引用類型轉(zhuǎn)化”課程中,老師將父類Animal轉(zhuǎn)換為子類Dog稱為向下類型轉(zhuǎn)換,子類轉(zhuǎn)換為父類稱為向上類型轉(zhuǎn)換并用比喻“父類像水壺,子類像水杯,父類轉(zhuǎn)換為子類就類似于將水壺里的水倒入水杯中,可能裝不下,是有風(fēng)險(xiǎn)的,稱為向下類型轉(zhuǎn)換;子類轉(zhuǎn)換為父類就類似于將水杯里的水倒入水壺中,是沒有風(fēng)險(xiǎn)的,稱為向上類型轉(zhuǎn)換。”聯(lián)想到學(xué)習(xí)變量時(shí)的強(qiáng)制類型轉(zhuǎn)換:double->int時(shí)是有風(fēng)險(xiǎn)的,需要做強(qiáng)制類型轉(zhuǎn)換,會(huì)丟棄部分?jǐn)?shù)據(jù),因?yàn)閐ouble的范圍大于int(這句話不太嚴(yán)謹(jǐn),但我大概是這樣理解的)回歸正題,子類繼承父類的全部成員,包括變量、方法,子類還可以另寫父類沒有的方法;也就是說,父類有的子類都有,父類沒有的子類也可以另寫?那為什么還將父類比喻成大水壺,子類比喻成小水杯呢?子類的范圍不是大于父類的嗎?(父類有的全都有,父類沒有的也能另寫)那為何,大范圍Dog->小范圍Animal無須多慮?為何小Animal->大Dog時(shí)會(huì)有風(fēng)險(xiǎn),必須強(qiáng)制轉(zhuǎn)換?Animal小于Dog,小->大(int->double)會(huì)有風(fēng)險(xiǎn)?是老師的比喻不恰當(dāng),還是我的理解哪里出了問題,子類繼承父類的所有成員,應(yīng)當(dāng)理解成子類double,父類int嗎?困惑,感謝解答
3 回答
已采納

郝然
TA貢獻(xiàn)12條經(jīng)驗(yàn) 獲得超10個(gè)贊
其實(shí)是你對對象的理解問題,這的說不知道你能不能明白,就用你舉的例子,動(dòng)物的范圍大于狗,也就是父類范圍大于子類。
而你說的父類有的子類都有還可以有特有的,這和你上面說的范圍不是一個(gè)意義的詞,比如狗有你定義的動(dòng)物的全部特征和方法,還有自己專屬于狗的特征和方法,,這并不是單純的范圍而是對象的特性與共性,小范圍的特征肯定是多余大范圍的共同特征的
double和int是基本類型不是對象,不存在子父類繼承關(guān)系
而Double和Integer也就是它們的包裝類同是Number的子類,是兩個(gè)有共性的個(gè)體不存在繼承關(guān)系
純手打,如果能明白請采納

添加回答
舉報(bào)
0/150
提交
取消