大神來看看
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方法....