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

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

關(guān)于instanceof的一個疑問

感覺自己鉆牛角尖,一直有點懵

????????Cat c=new Cat();//實例化一個對象c? 它的類型是Cat

?? ???? Dog d=new Dog();
?? ??? ?Animals an=c; //自動類型提升,向上類型轉(zhuǎn)換? c的類型由Cat轉(zhuǎn)換為Animals
?? ??? ?System.out.println(an instanceof Cat);//true
?? ??? ?if(an instanceof Cat){? //用instanceof 判斷an 是否是Cat類型 ?
?? ??? ??? ?Cat c1=(Cat)an;//強制類型轉(zhuǎn)換。轉(zhuǎn)化為Cat類型 講Animals 類型轉(zhuǎn)換為 Cat類型
?? ??? ?}else{
?? ??? ??? ?System.out.println("無法進行類型轉(zhuǎn)換 轉(zhuǎn)換成Cat類型");
?? ??? ?}
?? ??? ?System.out.println(an instanceof Dog);//false??
?? ??? ?if(an instanceof Dog){//instanceof 判斷一個引用是否是某個類型或者某個類型的子類型
?? ??? ??? ?Dog d1=(Dog)an;
?? ??? ?}else{
?? ??? ??? ?System.out.println("無法進行類型轉(zhuǎn)換 轉(zhuǎn)換成Dog類型");
?? ??? ?}


具體的都在上面代碼的注釋里。然后主要問題就是,為什么 an instanceof Cat 為true?

an instanceof Dog 為false?? Dog 和Cat都是Animals 的子類呀。

個人覺得問題是在Animals an=c;上,因為我將這句代碼改成Animals an= d;結(jié)果就是相反的?? 但是這個代碼不是向上類型轉(zhuǎn)換么,轉(zhuǎn)換的是c或者d的類型,會影響到an么。我有點轉(zhuǎn)不過彎,有沒大神為我解答下。萬分感謝

正在回答

4 回答

Java?中的instanceof 運算符是用來在運行時指出對象是否是特定類的一個實例。instanceof通過返回一個布爾值來指出,這個對象是否是這個特定類或者是它的子類的一個實例。雖然發(fā)生了向上轉(zhuǎn)型,但是,實質(zhì)上內(nèi)存存儲的依然是Cat類的實例,所以,下邊的an instanceof Dog,本質(zhì)上an這個貓類的實例化對象,會是Dog類的實例嗎?想想對象的指向,你就明白了。望采納,謝謝。

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

柒_夜4080291 提問者

非常感謝!
2016-11-25 回復(fù) 有任何疑惑可以回復(fù)我~

你的代碼是進行編譯的時候 編譯的是dog類型 但是運行的時候 運行的是cat類型 ?

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

an存儲的是cat類的對象

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

我覺得an instanceof Cat這句話本身就有問題,an是一個對象,Cat是一個類,應(yīng)該改為Animals?instanceof Cat 和Animals?instanceof ?Dog應(yīng)該就沒問題了吧。

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

舉報

0/150
提交
取消
Java入門第二季 升級版
  • 參與學(xué)習(xí)       531104    人
  • 解答問題       6286    個

課程升級!以終為始告別枯燥,在開發(fā)和重構(gòu)中體會Java面向?qū)ο缶幊痰膴W妙

進入課程

關(guān)于instanceof的一個疑問

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

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

幫助反饋 APP下載

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

公眾號

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