課程
/后端開發
/Java
/Java入門第二季 升級版
dog和cat同為不同子類的對象
2016-07-10
源自:Java入門第二季 升級版 10-2
正在回答
你要看代碼哦:
Dog dog=new Dog();
Animal animal=dog();
Dog dog2=(Dog)animal;
Cat cat=(Cat)animal;
代碼 分析:
Dog dog=new Dog(); //new了一個Dog()對象,并被dog指向;
Animal animal=dog; //創建變量animal 并賦值為dog;也就是說把dog的指向賦值給animal;
上面其實可以綜合成一句代碼:Animal animal = new Dog();其實就是父類實例化子類對象,即多態;
Dog dog2=(Dog)animal;//創建dog2,為其賦值animal的指向,由于animal的類型是Animal,大(Animal)轉?。―og),所以需要強制類型轉換;
最后關鍵來了,創建了一個Cat類型的cat,然后為其賦值animal:
注意:此時animal是Animal類的Dog對象,也就是說你拿動物類中的一只小狗這個對象,去把它變成貓類中的一只貓,你考慮過汪星人的想法么?汪星人不愿意啊,當然是不行的。
那為什么之前一句可以呢?之前一句的意思是說,把動物類的一只小狗,放進狗類里然后改名叫dog2,那汪星人當然愿意啊,多好啊,找到歸宿了。但是動物類中叫dog的這只小狗其實和狗類中叫dog2的小狗,是同一只大汪汪啊~~~
話說回來,這只小狗真可憐,被你們這幫程序員拎過來拎過去的,還要變成貓,哎~~~
木刻回答,必屬精答,純手打,望采納~~
3128 提問者
給自己加油
狗當然不能轉到貓了。。但可以把狗叫成動物。 類型只能為本類或父類。
舉報
課程升級!以終為始告別枯燥,在開發和重構中體會Java面向對象編程的奧妙
4 回答為什么animal能轉換成dog類對象,而不能轉成cat對象呢?
2 回答為什么Cat不能轉換成Animal呢?
4 回答本節例題中animal可以強制轉換成Dog類,為什么不能強制轉換成Cat類?Cat類和Dog類都是Animal類的子類啊。
2 回答將animal轉換成cat
2 回答為什么我這樣寫 自動生成的是Animal other = (Animal) obj;轉換成Animal類 而不是轉換為Dog類
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-07-12
你要看代碼哦:
Dog dog=new Dog();
Animal animal=dog();
Dog dog2=(Dog)animal;
Cat cat=(Cat)animal;
代碼 分析:
Dog dog=new Dog(); //new了一個Dog()對象,并被dog指向;
Animal animal=dog; //創建變量animal 并賦值為dog;也就是說把dog的指向賦值給animal;
上面其實可以綜合成一句代碼:Animal animal = new Dog();其實就是父類實例化子類對象,即多態;
Dog dog2=(Dog)animal;//創建dog2,為其賦值animal的指向,由于animal的類型是Animal,大(Animal)轉?。―og),所以需要強制類型轉換;
最后關鍵來了,創建了一個Cat類型的cat,然后為其賦值animal:
Cat cat=(Cat)animal;
注意:此時animal是Animal類的Dog對象,也就是說你拿動物類中的一只小狗這個對象,去把它變成貓類中的一只貓,你考慮過汪星人的想法么?汪星人不愿意啊,當然是不行的。
那為什么之前一句可以呢?之前一句的意思是說,把動物類的一只小狗,放進狗類里然后改名叫dog2,那汪星人當然愿意啊,多好啊,找到歸宿了。但是動物類中叫dog的這只小狗其實和狗類中叫dog2的小狗,是同一只大汪汪啊~~~
話說回來,這只小狗真可憐,被你們這幫程序員拎過來拎過去的,還要變成貓,哎~~~
木刻回答,必屬精答,純手打,望采納~~
2016-07-10
狗當然不能轉到貓了。。但可以把狗叫成動物。 類型只能為本類或父類。