大神來看看
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賦了一個值55吧?
2015-06-14
在car子類中的showseat方法你用this.seat,因為子類里面沒有重新定義seat變量,所以系統(tǒng)默認(rèn)此時你調(diào)用的是父類的seat,所以當(dāng)你的程序執(zhí)行到這的時候你原來給父類seat賦值55在這被覆蓋了,所以結(jié)果是4。如果你把this.seat=4改成int seat=4,在子類里面重新定義一個和父類一樣的變量,此時輸出結(jié)果就對了。
2015-04-23
額.....你給父類的賦值沒有用啊,你調(diào)用的是子類的方法.....他不會調(diào)用父類的方法的。只是在實例化Car的時候會先實例化父類的構(gòu)造方法。
2015-04-23
你Car的showSeat方法中,你給seat賦了4
在main方法中調(diào)用了car對象的showSeat方法....