為什么子類(lèi)this.seat和super.seat的輸出值是一樣的呢?
package?com.imooc3;
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("父類(lèi)的構(gòu)造方法");
??this.seat=seat;
?}
package?com.imooc3;
public?class?Car?extends?Bus?{
?public?void?showSeat(){?//方法重寫(xiě)
??System.out.println("父類(lèi)的Bus的座位數(shù)為"+super.seat);
??int?seat=4;
??System.out.println("子類(lèi)car的座位數(shù)為"+this.seat);?????????????//為什么用this.seat和super.seat輸出的值是一樣的呢
??System.out.println("父類(lèi)的Bus的座位數(shù)為"+super.seat);
?}
?public?Car(int?seat){?//帶參構(gòu)造方法
??super(seat);
??System.out.println("子類(lèi)的構(gòu)造方法");
?}
}
package?com.imooc3;
public?class?Test?{
public?static?void?main(String[]?args)?{
??//?TODO?Auto-generated?method?stub
??Car?honda=new?Car(55);
??honda.showSeat();
?}
}
最后結(jié)果是:
父類(lèi)的構(gòu)造方法
子類(lèi)的構(gòu)造方法
父類(lèi)的Bus的座位數(shù)為55
子類(lèi)car的座位數(shù)為55
父類(lèi)的Bus的座位數(shù)為55
2015-08-15
我覺(jué)得是對(duì)象實(shí)例化的時(shí)候?qū)?5覆蓋了子類(lèi)默認(rèn)的seat=4.就好像我先定義 int seat=4;之后我再讓seat=55,是可以的,這時(shí)候seat=55,因?yàn)樽兞渴强梢愿淖冎档?,常量就不可以?/p>
2015-07-29
你的程序我看了,也運(yùn)行了。這么和解釋吧,在創(chuàng)建子類(lèi)對(duì)象時(shí)即Car?honda=new?Car(55); 程序首先會(huì)訪問(wèn)和執(zhí)行父類(lèi)的屬性和構(gòu)造方法,然后再訪問(wèn)和執(zhí)行子類(lèi)的屬性和構(gòu)造方法,這是我們初始化訪問(wèn)你的順序,在這之后我們的參數(shù)55就傳給了父類(lèi)中的屬性seat,父類(lèi)構(gòu)造方法中this.seat=seat;就完成了這一步。接著運(yùn)行到?honda.showSeat();系統(tǒng)默認(rèn)會(huì)調(diào)用子類(lèi)中的showSeat方法,看好你問(wèn)的問(wèn)題來(lái)了
public?void?showSeat(){?//方法重寫(xiě)
System.out.println("父類(lèi)的Bus的座位數(shù)為"+super.seat);//這里訪問(wèn)的是父類(lèi)屬性seat=55
??int?seat=4;//問(wèn)題的關(guān)鍵在這里:這里的seat是你定義在showSeat中的一個(gè)局部變量,和你父類(lèi)屬性是兩個(gè)不同的變量,只是同名而已,所以你這里的定義和賦值是不會(huì)傳到父類(lèi)屬性的seat中的,父類(lèi)屬性seat還是55。
??System.out.println("子類(lèi)car的座位數(shù)為"+this.seat); ? ? //這里的this.seat代表的是當(dāng)前對(duì)象Car里的seat屬性,由于你沒(méi)有在Car中定義屬性seat,則默認(rèn)繼承f父類(lèi)中的seat=55
??System.out.println("父類(lèi)的Bus的座位數(shù)為"+super.seat);
?}
你不如在加上一個(gè)System.out.println(seat);驗(yàn)證
2015-06-14
那this。seat調(diào)用的是父類(lèi)的seat嗎?
2015-06-14
new car的時(shí)候先調(diào)用父類(lèi)的構(gòu)造方法并把值賦值給父類(lèi)的seat屬性了。