大神來看看
public?class?Bus?{//汽車類 int?seat;//座位數(shù) float?price; public?void?showSeat(){ this.seat=47; System.out.println("Bus的座位數(shù)為:"+seat); } public?Bus(int?seat){ System.out.println("父類的構(gòu)造方法"); this.seat=seat; } }
public?class?car?extends?Bus?{??//子類轎車類 public?void?showSeat(){?//方法重寫 this.seat=4; System.out.println("子類car的座位數(shù)為"+seat); System.out.println("父類的Bus的座位數(shù)為"+super.seat); } public?car(int?seat){?//帶參構(gòu)造方法 super(seat); System.out.println("子類的構(gòu)造方法"); } }
public?class?test?{ public?static?void?main(String[]?args){ car?honda=new?car(55); honda.showSeat(); } }
問下大神 ?為什么輸出是:
子類car的座位數(shù)為4
父類的Bus的座位數(shù)為4
我只是在構(gòu)造方法里面給seat賦了一個(gè)值55吧?
2015-06-14
在car子類中的showseat方法你用this.seat,因?yàn)樽宇惱锩鏇]有重新定義seat變量,所以系統(tǒng)默認(rèn)此時(shí)你調(diào)用的是父類的seat,所以當(dāng)你的程序執(zhí)行到這的時(shí)候你原來給父類seat賦值55在這被覆蓋了,所以結(jié)果是4。如果你把this.seat=4改成int seat=4,在子類里面重新定義一個(gè)和父類一樣的變量,此時(shí)輸出結(jié)果就對了。
2015-04-23
額.....你給父類的賦值沒有用啊,你調(diào)用的是子類的方法.....他不會調(diào)用父類的方法的。只是在實(shí)例化Car的時(shí)候會先實(shí)例化父類的構(gòu)造方法。
2015-04-23
你Car的showSeat方法中,你給seat賦了4
在main方法中調(diào)用了car對象的showSeat方法....