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

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

關于super的問題

//Animal類:
public?class?Animal?{
public?int?age?=?110;
public?String?name;
public?void?eat(){
System.out.println("動物具有吃東西的能力");
}
public?Animal(){
System.out.println("Animal類執行");
age?=?210;
}
}
//dog類繼承Animal類:
public?class?Dog?extends?Animal?{
	

	public?Dog(){
		System.out.println("Dog類執行了");
		System.out.println("這里是dog的構造函數,現在Age?of?the?Animal?is:"?+?super.age);
	}
	public?void?eat(){
		System.out.println("狗是可以吃東西的");
		System.out.println("這里是dog類內的eat函數,現在Age?of?the?Animal?is:"?+?super.age);
	}
}
//初始化類:
public?class?Initial?{

	public?static?void?main(String[]?args)?{
		//?TODO?Auto-generated?method?stub
		Animal?animal?=?new?Animal();
		System.out.println(animal.age);
		Dog?dog?=?new?Dog();
		dog.age=110;
		dog.name="Bobby";
		dog.eat();
	}

}

顯示結果:

Animal類執行

210

Animal類執行

Dog類執行了

這里是dog的構造函數,現在Age of the Animal is:210

狗是可以吃東西的

這里是dog類內的eat函數,現在Age of the Animal is:110

為什么在eat函數里print年齡的時候,就是顯示主函數給狗的年齡了?難道不應該是父類animal的年齡嗎?求解。

正在回答

1 回答

dog類繼承了animal類,dog類沒有定義自己的age, 這種情況下Dog類和Animal類的age是同一個。

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

閏冬秋拾 提問者

但是既然你是繼承Animal類,肯定是先有Animal類再有Dog類,那么在Dog類內調用super.age的時候不應該是Animal類的age,為210嗎?難道說主函數給Dog賦值的age能影響到他的父類Animal?這個因果關系有問題吧?
2016-07-19 回復 有任何疑惑可以回復我~
#2

閏冬秋拾 提問者

非常感謝!
2016-07-20 回復 有任何疑惑可以回復我~

舉報

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

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

進入課程

關于super的問題

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

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

幫助反饋 APP下載

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

公眾號

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