課程
/后端開發
/Java
/Java入門第二季 升級版
比如
Vehicle v=new Car();
v.test();調用的就是子類的重寫的test()?
明明創建的是父類對象???求解?。?!
2016-01-30
源自:Java入門第二季 升級版 10-2
正在回答
?你可以理解為,用子類a去賦值給父類變量b的時候,會將子類中關于父類的方法和屬性直接復制給父類b的變量,因為a能夠訪問父類方法和屬性的前提是繼承自父類的方法、屬性沒有被覆蓋,這是由于繼承時要保護父類的原因 ,其實父類變量b還是指向的是子類a的代碼塊,a并沒有被Java給回收
dongbian 提問者
我感覺也是Car對象
還是說,就算:
Car a=new Car();
?Vehicle v=a;
v的地址空間仍然是Dog類的地址空間?那么,第二句話在實際編寫代碼中有什么地方會用到呢?
額。。不對不對,創建的應該是子類對象,,
但是:
?Vehicle v=a;//上兩句是不是相當于Vehicle v=new Car();? ?
?如果是的話,那第二句不是已經轉換成父類類型了么?為什么?v.test();調用的還是子類重寫過的方法?
?v.test();
?Car w=(Car)v;
?w.test();
舉報
課程升級!以終為始告別枯燥,在開發和重構中體會Java面向對象編程的奧妙
4 回答求大神解答我的疑惑
1 回答很困惑?。∏蟠笊裰笇?/p>
3 回答求解,大神
1 回答Super和This關系!真的不懂求大神講解
10 回答求解!大神來。。。。。。。。。。。。。。。。
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-01-30
?你可以理解為,用子類a去賦值給父類變量b的時候,會將子類中關于父類的方法和屬性直接復制給父類b的變量,因為a能夠訪問父類方法和屬性的前提是繼承自父類的方法、屬性沒有被覆蓋,這是由于繼承時要保護父類的原因 ,其實父類變量b還是指向的是子類a的代碼塊,a并沒有被Java給回收
2016-02-01
我感覺也是Car對象
2016-01-30
還是說,就算:
Car a=new Car();
?Vehicle v=a;
v的地址空間仍然是Dog類的地址空間?那么,第二句話在實際編寫代碼中有什么地方會用到呢?
2016-01-30
額。。不對不對,創建的應該是子類對象,,
但是:
Car a=new Car();
?Vehicle v=a;//上兩句是不是相當于Vehicle v=new Car();? ?
?如果是的話,那第二句不是已經轉換成父類類型了么?為什么?v.test();調用的還是子類重寫過的方法?
?v.test();
?Car w=(Car)v;
?w.test();