亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

大神來看看

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吧?

正在回答

3 回答

在car子類中的showseat方法你用this.seat,因為子類里面沒有重新定義seat變量,所以系統默認此時你調用的是父類的seat,所以當你的程序執行到這的時候你原來給父類seat賦值55在這被覆蓋了,所以結果是4。如果你把this.seat=4改成int seat=4,在子類里面重新定義一個和父類一樣的變量,此時輸出結果就對了。

0 回復 有任何疑惑可以回復我~

額.....你給父類的賦值沒有用啊,你調用的是子類的方法.....他不會調用父類的方法的。只是在實例化Car的時候會先實例化父類的構造方法。


0 回復 有任何疑惑可以回復我~

你Car的showSeat方法中,你給seat賦了4

在main方法中調用了car對象的showSeat方法....

0 回復 有任何疑惑可以回復我~
#1

dapatpat 提問者

我的car的構造方法是會給Bus.seat賦值為55的 我剛才在car的showseat方法里面this.seat之前和之后都輸出了一下super.seat 之前輸出的是55 但是之后輸出的就變成了4 不知道為什么這里的this.seat把父類的seat都給改了。。。。。
2015-04-23 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Java入門第二季 升級版
  • 參與學習       531143    人
  • 解答問題       6326    個

課程升級!以終為始告別枯燥,在開發和重構中體會Java面向對象編程的奧妙

進入課程

大神來看看

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號