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

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

不懂多態,求大神解惑

比如

Vehicle v=new Car();

v.test();調用的就是子類的重寫的test()?

明明創建的是父類對象???求解?。?!

正在回答

4 回答

?你可以理解為,用子類a去賦值給父類變量b的時候,會將子類中關于父類的方法和屬性直接復制給父類b的變量,因為a能夠訪問父類方法和屬性的前提是繼承自父類的方法、屬性沒有被覆蓋,這是由于繼承時要保護父類的原因 ,其實父類變量b還是指向的是子類a的代碼塊,a并沒有被Java給回收


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

dongbian 提問者

非常感謝!
2016-01-31 回復 有任何疑惑可以回復我~

我感覺也是Car對象

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

還是說,就算:

Car a=new Car();

?Vehicle v=a;

v的地址空間仍然是Dog類的地址空間?那么,第二句話在實際編寫代碼中有什么地方會用到呢?


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

dongbian 提問者

寫錯了,是car。。
2016-01-30 回復 有任何疑惑可以回復我~

額。。不對不對,創建的應該是子類對象,,

但是:

Car a=new Car();

?Vehicle v=a;//上兩句是不是相當于Vehicle v=new Car();? ?

?如果是的話,那第二句不是已經轉換成父類類型了么?為什么?v.test();調用的還是子類重寫過的方法?

?v.test();

?Car w=(Car)v;

?w.test();


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

舉報

0/150
提交
取消

不懂多態,求大神解惑

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

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

幫助反饋 APP下載

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

公眾號

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