this.seat調(diào)用的是父類的還是調(diào)用的子類的??為什么子類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("父類的構(gòu)造方法"); ??this.seat=seat; ?} package?com.imooc3; public?class?Car?extends?Bus?{ ?public?void?showSeat(){?//方法重寫 ??System.out.println("父類的Bus的座位數(shù)為"+super.seat); ??int?seat=4;//為什么把該變量的定義放在方法外就可以呢 ??System.out.println("子類car的座位數(shù)為"+this.seat);?????????????//為什么用this.seat和super.seat輸出的值是一樣的呢 ??System.out.println("父類的Bus的座位數(shù)為"+super.seat); ?} ?public?Car(int?seat){?//帶參構(gòu)造方法 ??super(seat); ??System.out.println("子類的構(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é)果是: 父類的構(gòu)造方法 子類的構(gòu)造方法 父類的Bus的座位數(shù)為55 子類car的座位數(shù)為55 父類的Bus的座位數(shù)為55
?
2015-06-16
方法中int seat=4是在棧中開辟的空間,與之前的seat不是同一個(gè),你改成this.seat就是指的同一個(gè)seat了。
2015-06-15
this是一個(gè)本類對(duì)象的引用,指向該類自己的對(duì)象。
2015-06-14
我不明白的地方是為什么在子類car中把int seat = 4放在方法showseat里的時(shí)候,this.seat的結(jié)果會(huì)和super.seat的結(jié)果一樣。
2015-06-14
(1)第一個(gè)問題
this.seat表示的是當(dāng)前所在類成員變量。
在Java中使用super來引用父類的成員,用this來引用當(dāng)前對(duì)象。
(2)第二個(gè)問題
因?yàn)樵趧?chuàng)建子類對(duì)象時(shí),?Car?honda=new?Car(55);
通過以下構(gòu)造函數(shù)傳入?yún)?shù)55。
?public?Car(int?seat){?//帶參構(gòu)造方法
??super(seat);//調(diào)用父類的構(gòu)造函數(shù)
??System.out.println("子類的構(gòu)造方法");
?}
而在子類Car的構(gòu)造函數(shù)中又調(diào)用了父類Bus的構(gòu)造函數(shù)super(55);
所有this.seat和super.seat都表示55。
如果這樣還不明白,可以私信我