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

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

添加回答
舉報
0/150
提交
取消