Animal animal = dog 難道不是dog包含的比animal多嗎?
Animal animal = dog 難道不是dog包含的比animal多嗎?那在animal指向dog的過程中,不是會損失一部分(重載也丟失了)?
反向的 Dog dog =animal ,并不會損失數(shù)據(jù),只是會有空值。那為什么又不可以?
嘗試進(jìn)行理解:
這里的animal只是一個指針,父類的指針可以指向子類的對象,反之不行。這樣對嗎?
Animal animal = dog 難道不是dog包含的比animal多嗎?那在animal指向dog的過程中,不是會損失一部分(重載也丟失了)?
反向的 Dog dog =animal ,并不會損失數(shù)據(jù),只是會有空值。那為什么又不可以?
嘗試進(jìn)行理解:
這里的animal只是一個指針,父類的指針可以指向子類的對象,反之不行。這樣對嗎?
2019-01-08
舉報
2019-01-08
編程語言是仿照現(xiàn)實情況做處理的。Animal animal = dog,anmimal指針可以指向子集中的一部分。這個沒問題。你說的dog包含的多,只是特征多。父類包含的是大家共有的信息,是抽象,肯定特征少。比如動物都會吃,不一定都會象狗一樣看門。animal指向dog的過程中,它的類型還是animal,不是dog。所以重載不會丟失。
Dog dog =animal,這句,如果不把a(bǔ)nimal強(qiáng)制轉(zhuǎn)型,這句話會報錯。因為兩者類型不同。而且,如果這個animal不是事先已經(jīng)指向子類的指針,在Dog dog =(Dog)animal;轉(zhuǎn)型過程中也是錯誤的,即使編譯不報錯,運(yùn)行也會報錯。也就是說:Animal animal = Animal();Dog dog =(Dog)animal;運(yùn)行時會報錯。只有Animal animal = Dog();Dog dog =(Dog)animal;才會不報錯。所以向下轉(zhuǎn)型本身意義不大,不是都能轉(zhuǎn)的。
父類的指針可以指向子類的對象。這個沒錯。因為Dog肯定是Animal。反過來。Animal一定是Dog嗎?肯定不是。
2019-01-10
謝謝大佬?
?