亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

為什么Cat類型不能轉換成Animal類型?為什么說animal不含cat類型的元素?可是cat不是animal的子類,繼承了animal的所有屬性和方法嗎?

為什么Cat類型不能轉換成Animal類型?為什么說animal不含cat類型的元素?可是cat不是animal的子類,繼承了animal的所有屬性和方法嗎?

正在回答

10 回答


為什么說Cat類型不能轉換成Animal類型,因為Dog dog = new Dog(); ? ??Animal animal = dog; ? Dog dog2 = (Dog)animal這三段代碼告訴你 dog已經強轉為animal; 如果此刻你再把Cat強轉為animal,就相當于把Cat強轉為dog,子類強轉子類,所以就錯了! ? 看下面圖片,這樣就可以將Cat轉化為Animal類型。。。如果還不明白,自己試試代碼就明白了

http://img1.sycdn.imooc.com//5847b1350001a9d303140103.jpg

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

視頻里最后是將cat轉成dog呀

0 回復 有任何疑惑可以回復我~

Cat類是可以轉換成Animal類的;

現在的animal實際上是Dog類的,類型是和Dog相同的,所以animal不含Cat類,所以不能轉換成Cat類

3 回復 有任何疑惑可以回復我~

最后那一句漏了兩個括號,重新寫一下以免誤導:Cat()和Dog()是沒有關聯的,所以不能轉換

0 回復 有任何疑惑可以回復我~

我也是新手,不保證對,我是這樣理解的:

Dog dog=new Dog();創建對象引用Dog()這個子類;把這個類賦給dog,類型還是Dog類;但這個類新開辟了地址,而Animal animal=dog把Dog()這個類賦給了animal,animal的類型是Animal(因為Dog()是Animal()的子類,就像一條河的支流,本質上還是Animal()的一部分,所以可以轉換),而Dog dog2=(Dog)animal;

把animal賦給dog2,類型是Dog,也就是說這里實質上就是dog2=dog,dog是Dog類,所以可以轉換。而Cat cat=(Cat)animal;上面說了Dog()類被引用過來命名為dog,而dog又命名為animal,只是類型變了,也就是說,animal=Dog();也就是說這里我們把Dog()賦給cat,類型轉變為Cat類型,那么問題來了,Cat類型是Cat()的類型,Cat()和和Dog是沒有關聯的,所以不能轉換

0 回復 有任何疑惑可以回復我~

你們在說些什么啊



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

我覺得如果你開辟?Cat cat=new cat; 就可以了

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

慕粉15555107797

我創建了一個會報錯,
2016-06-29 回復 有任何疑惑可以回復我~
#2

慕粉小蝸牛 回復 慕粉15555107797

子類確實繼承了父類的方法和屬性,但兩個子類確實不能轉換,因為你開辟新的空間。所有子類都在父類這個大空間下,但里邊子類是不同的空間,所以不能轉換
2016-06-29 回復 有任何疑惑可以回復我~

視頻有一個父類對象,并沒有用new關鍵字開辟內存空間,但是子類Dog類創建對象的時候使用new關鍵字開辟了內存空間,父類對象只是像指針一樣指向了子類Dog的對象,也就是引用。那么animal對象實際上還是Dog類對象,當強制轉換animal對象的時候實際上轉換的Dog類的對象,所以animal對象不能強制轉換成Cat類。強制轉換與方法和屬性沒有關系,與內存類型有關。這是我的理解,希望能幫到你。

3 回復 有任何疑惑可以回復我~

因為在剛開始申明了Animal animal= dog; ? ?animal開辟的是dog 空間,即使你強制轉換 ?Cat cat=(Cat) animal;

系統不報錯,。但最后運行 的時候 ? cat 并不能與dog 相兼容

0 回復 有任何疑惑可以回復我~

是不是在程序中再加一條“Animal animal=cat;“語句就可以將cat類型轉換成animal類型了?

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

羅建彪

這樣程序員會報錯的,cat和dog不能兼容
2016-05-12 回復 有任何疑惑可以回復我~
#2

啊啊啊啊123

我覺得加一個Cat cat = new Cat(); Animal animal=cat;就能用了
2016-06-07 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么Cat類型不能轉換成Animal類型?為什么說animal不含cat類型的元素?可是cat不是animal的子類,繼承了animal的所有屬性和方法嗎?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號