java中通過(guò)父類引用創(chuàng)建子類對(duì)象后,輸出子類的屬性值不是子類中所寫的屬性值,而是繼承父類的,為什么
package?com.hu;? public?class?Vehicle?{ ???public?int?num;??? ???public?String?mode;??? ???public?String?type;? ????????? ???public?void?ability(){? ??????????System.out.println("交通工具具有載人出行的能力");???????????????? ??????????System.out.println("num:"+num+"\nmode:"+mode+"\ntype:"+type);???????????? ??????????}???????? ??}??? ???????????????? public?class?Car?extends?Vehicle?{? ???public?int?num=6;????? ???public?String?mode="陸行";?????? ???public?String?type="汽車";?? ??????????? ???public?void?ability(){ ???????????????System.out.println("汽車具有載人陸行的能力");?????????????????? ???????????????System.out.println("num:"+num+"\nmode"+mode+"\ntype"+type);???????????????? ???????????????}???????????????????? ???????????????@Override???????????????????????? ???????????????public?String?toString()?{???????????????????????? ???????????????return?"Car?[num="?+?num?+?",?mode="?+?mode?+?",?type="?+?type?+?"]";???????????????????????? ???????????????}? ??????????????? ???????????????public?class?Initail?{???public?static?void?main(String[]?args)?{? ??????????????????????????????Vehicle?vehicle?=?new?Vehicle();???????????????? ??????????????????????????????Vehicle?car?=?new?Car();?? ???????????????????????????????????????????????????????????????????????????? ???????????????????????????????vehicle.ability();?????????????????? ???????????????????????????????System.out.println();??? ???????????????????????????????????????????????????????????????????? ???????????????????????????????car.ability();?????????????????? ???????????????????????????????System.out.println();???????????????????????????????????? ???????????????????????????????System.out.println(car.num+"\n"+car.mode+"\n"+car.type);//就是這行 ??????????????????????????????????????????????? ???????????????????????????????System.out.println();???????????????????????????????????????????????????? ???????????????????????????????System.out.println(car);???????????????????????? ???????????????????????????????}???????????????? ???????????????????????????????}
為什么
System.out.println(car.num+"\n"+car.mode+"\n"+car.type);
這句輸出的是
0
null
null
而不是
6
陸行
汽車
2018-05-15
父類引用指向子類對(duì)象的時(shí)候,只有調(diào)用方法的時(shí)候,得到的才是子類重寫的方法,所以你的car.ability();輸出的是正確的,但是car.num這樣直接調(diào)用變量是不行的
2018-07-20
你的屬性應(yīng)該寫在方法里
2018-07-19
我想應(yīng)該是這樣的:父類和子類有同名的屬性時(shí),子類的屬性并不會(huì)覆蓋父類的屬性,使用父類引用輸出屬性值,輸出的是父類的。而方法不同,方法會(huì)覆蓋父類方法。
2018-07-01
闊以? 的
2018-04-25
keyi