為什么Cat類型不能轉換成Animal類型?為什么說animal不含cat類型的元素?可是cat不是animal的子類,繼承了animal的所有屬性和方法嗎?
為什么Cat類型不能轉換成Animal類型?為什么說animal不含cat類型的元素?可是cat不是animal的子類,繼承了animal的所有屬性和方法嗎?
為什么Cat類型不能轉換成Animal類型?為什么說animal不含cat類型的元素?可是cat不是animal的子類,繼承了animal的所有屬性和方法嗎?
2016-04-16
舉報
2016-12-07
為什么說Cat類型不能轉換成Animal類型,因為Dog dog = new Dog(); ? ??Animal animal = dog; ? Dog dog2 = (Dog)animal這三段代碼告訴你 dog已經強轉為animal; 如果此刻你再把Cat強轉為animal,就相當于把Cat強轉為dog,子類強轉子類,所以就錯了! ? 看下面圖片,這樣就可以將Cat轉化為Animal類型。。。如果還不明白,自己試試代碼就明白了
2016-08-25
視頻里最后是將cat轉成dog呀
2016-07-10
Cat類是可以轉換成Animal類的;
現在的animal實際上是Dog類的,類型是和Dog相同的,所以animal不含Cat類,所以不能轉換成Cat類
2016-06-08
最后那一句漏了兩個括號,重新寫一下以免誤導:Cat()和Dog()是沒有關聯的,所以不能轉換
2016-06-08
我也是新手,不保證對,我是這樣理解的:
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是沒有關聯的,所以不能轉換
2016-06-06
你們在說些什么啊
2016-06-06
我覺得如果你開辟?Cat cat=new cat; 就可以了
2016-05-11
視頻有一個父類對象,并沒有用new關鍵字開辟內存空間,但是子類Dog類創建對象的時候使用new關鍵字開辟了內存空間,父類對象只是像指針一樣指向了子類Dog的對象,也就是引用。那么animal對象實際上還是Dog類對象,當強制轉換animal對象的時候實際上轉換的Dog類的對象,所以animal對象不能強制轉換成Cat類。強制轉換與方法和屬性沒有關系,與內存類型有關。這是我的理解,希望能幫到你。
2016-04-18
因為在剛開始申明了Animal animal= dog; ? ?animal開辟的是dog 空間,即使你強制轉換 ?Cat cat=(Cat) animal;
系統不報錯,。但最后運行 的時候 ? cat 并不能與dog 相兼容
2016-04-16
是不是在程序中再加一條“Animal animal=cat;“語句就可以將cat類型轉換成animal類型了?