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