亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

Aniaml animal = dog;這句怎么理解啊?

Aniaml?animal?=?dog;這句怎么理解啊?

Aniaml?animal?=new Animal();意思是創建Animal對象,這邊寫=dog,是創建了一個Dog類對象animal?還是把之前

Dog dog=new Dog();這里的dog轉成Animal類型了。


正在回答

3 回答

父類持有子類的引用。簡單點講animal對象與dog對象持有相同方法say()時,假定Animal的say方法是打印字符串“a",后者是“doger"。當你用 Aniaml?animal?=?dog? 之后(?向上轉型)。調用animal對象的say方法,輸出的內容是doger 字符串,而非是a。

0 回復 有任何疑惑可以回復我~
#1

qq_慕移動7146552

如果是Dog dog1=(Dog)animal;那調用方法后為什么是doger,而不是a 呢?
2019-01-16 回復 有任何疑惑可以回復我~

前一句不是Dog dog = new Dog();意思就是創建了一個dog對象,類型是Dog,用一個子類的引用dog指向子類對象,然后Animal animal = dog;這個就是用一個父類的引用animal指向這個子類對象dog,是Animal類型的(因為是類是對象的類型),就是由Dog類型轉換為Animal類型,又因為Dog是Animal的子類,所以是向上轉換。不知道你能理解我說的意思嗎。。。我表達的可能不是很清楚,但大致就是這個意思,手打不易啊望采納。不懂可以追問。

1 回復 有任何疑惑可以回復我~

先看上面一句先創建了dog對象,記住是dog對象,已經有了一只狗對象,下面animal=dog這句你可以這么理解—狗是動物,向上轉換就是這樣,向下轉換你可以這樣說—dog=animal動物是狗,是不是覺得有問題!但這里創建對象是狗,向下有了一個對象,向下轉換的時候可以這么理解—dog=(Dog)animal這個動物是狗,那就沒問題了。后面說貓為什么不行,cat=(Cat)animal這個動物是貓。但是你創建的對象是狗,所以不對!

14 回復 有任何疑惑可以回復我~
#1

晨旭圓

這種比喻挺好,給你贊
2018-10-01 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

Aniaml animal = dog;這句怎么理解啊?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號