第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

Animal animal = dog 執(zhí)行后 animal 是基于哪個類型的?為什么 Cat cat = (Cat) animal; 執(zhí)行后回事false呢?

package?com.myjava2.polymorphic;

public?class?Initial?{

	public?static?void?main(String[]?args)?{
	??????
????????Dog?dog?=?new?Dog();//dog是Dog類型的實例
???????
????????Animal?animal?=?dog;//向下類型轉(zhuǎn)換
????????if(animal?instanceof?Dog){
????????Dog??dog2?=?(Dog)animal;//強制類型轉(zhuǎn)換
????????}else{
????????	System.out.println("無法進行類型轉(zhuǎn)換");
????????}
????????if(animal?instanceof?Cat){
????????Cat?cat?=?(Cat)?animal;//1.編譯是Cat類型?2.運行是Dog類型
????????}else{????????
????????	System.out.println("無法進行類型轉(zhuǎn)換");
????????}
	}

}

求解答

正在回答

5 回答

這是面向?qū)ο笾卸鄳B(tài)的特性,

Animal?動物?=?狗,此時(動物)的類型屬于Animal,值為狗,這是多態(tài)中類型的向下轉(zhuǎn)換,是成立的
Cat?貓?=?(Cat)動物,此時(貓)的類型屬于Cat,值為動物(且該動物已被賦為了狗)

你可以說動物中包含狗,動物是狗的分類
你不可以說貓中包含狗,貓是狗的分類,這樣說會不會很怪,因它不成立,所以會返回false


3 回復(fù) 有任何疑惑可以回復(fù)我~
#1

小光頭 提問者

非常感謝!
2017-06-13 回復(fù) 有任何疑惑可以回復(fù)我~

因為雖然我們對dog向上類型轉(zhuǎn)換成了Animal,但是它是屬于Dog類的,所以我們對animal進行判斷時,它屬于Dog類而不是Cat類(即第一個會進行強轉(zhuǎn),第二個會輸出:"無法進行類型轉(zhuǎn)換")。通俗的說我們可以把所有的動物放在animal類里面;但不會因為我們放在animal類里面而改變其種類。

0 回復(fù) 有任何疑惑可以回復(fù)我~

先聲明了一個Dog類的dog對象,然后申明Animal類的animal對象轉(zhuǎn)換為Dog類中的dog對象,二cat為Cat類的對象,Cat是Animal的子類,如果向上轉(zhuǎn)化類型將cat轉(zhuǎn)換為animal時,因為之前animal為dog轉(zhuǎn)換而來的所以animal現(xiàn)在是Dog類,所以會發(fā)生錯誤。(我是這樣理解的,不知道正確不,不知道幫到你沒有)

0 回復(fù) 有任何疑惑可以回復(fù)我~

先聲明了一個Dog類的dog對象,然后申明Animal類的animal對象轉(zhuǎn)換為Dog類中的dog對象,二cat為Cat類的對象,Cat是Animal的子類,如果向上轉(zhuǎn)化類型將cat轉(zhuǎn)換為animal時,因為之前animal為dog轉(zhuǎn)換而來的所以animal現(xiàn)在是Dog類,所以會發(fā)生錯誤。(我是這樣理解的,不知道正確不,不知道幫到你沒有)

0 回復(fù) 有任何疑惑可以回復(fù)我~

因為這個時候的animal指的是dog ?不能再指cat了

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

Animal animal = dog 執(zhí)行后 animal 是基于哪個類型的?為什么 Cat cat = (Cat) animal; 執(zhí)行后回事false呢?

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號