this.seat調用的是父類的還是調用的子類的??為什么子類this.seat和super.seat的輸出值是一樣的呢?求指教!!
package?com.imooc3; 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; ?} package?com.imooc3; public?class?Car?extends?Bus?{ ?public?void?showSeat(){?//方法重寫 ??System.out.println("父類的Bus的座位數為"+super.seat); ??int?seat=4;//為什么把該變量的定義放在方法外就可以呢 ??System.out.println("子類car的座位數為"+this.seat);?????????????//為什么用this.seat和super.seat輸出的值是一樣的呢 ??System.out.println("父類的Bus的座位數為"+super.seat); ?} ?public?Car(int?seat){?//帶參構造方法 ??super(seat); ??System.out.println("子類的構造方法"); ?} } package?com.imooc3; public?class?Test?{ public?static?void?main(String[]?args)?{ ??//?TODO?Auto-generated?method?stub ??Car?honda=new?Car(55); ??honda.showSeat(); ?} } 最后結果是: 父類的構造方法 子類的構造方法 父類的Bus的座位數為55 子類car的座位數為55 父類的Bus的座位數為55
?
2015-06-16
方法中int seat=4是在棧中開辟的空間,與之前的seat不是同一個,你改成this.seat就是指的同一個seat了。
2015-06-15
this是一個本類對象的引用,指向該類自己的對象。
2015-06-14
我不明白的地方是為什么在子類car中把int seat = 4放在方法showseat里的時候,this.seat的結果會和super.seat的結果一樣。
2015-06-14
(1)第一個問題
this.seat表示的是當前所在類成員變量。
在Java中使用super來引用父類的成員,用this來引用當前對象。
(2)第二個問題
因為在創建子類對象時,?Car?honda=new?Car(55);
通過以下構造函數傳入參數55。
?public?Car(int?seat){?//帶參構造方法
??super(seat);//調用父類的構造函數
??System.out.println("子類的構造方法");
?}
而在子類Car的構造函數中又調用了父類Bus的構造函數super(55);
所有this.seat和super.seat都表示55。
如果這樣還不明白,可以私信我