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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

這樣為什么不行十個字

這樣為什么不行十個字

Goddess_chkx 2016-07-31 00:55:55
查看完整描述

9 回答

?
dreamertn9527

TA貢獻3條經驗 獲得超4個贊

  • ?java中每個類必須有一個構造函數,如果沒有顯示的聲明構造函數,那么編譯器會自動加一個無參的構造函數。當顯示定義了帶參數的構造函數之后,而沒有顯示的定義無參構造函數,那么這個類就沒有無參構造函數了。

  • ?子類繼承父類,必須在子類的構造函數中調用父類的構造函數,如果子類的構造函數中,沒有顯示的調用父類的構造函數,那么會自動調用父類的無參數構造函數,如果父類沒有無參數構造函數,那么子類中必須顯示的調用父類的構造函數(使用super關鍵字即可),而且必須是在構造方法的第一個語句 中進行調用。

????? ? PS:現在說說你的代碼的問題,父類Animal沒有顯示的定義無參構造函數,所以只有有參構造函數,子類必須調用父類的構造方法(即父類的有參構造方法),用來初始化父類。(子類在執行過程中,先執行父類,所以必須初始化父類的構造器,避免出現錯誤)。

//?父類Animal
public?class?Animal?{

	private?String?color;
	private?String?size;
	
	//?只定義了有參構造函數,未顯示定義無參構造函數
	public?Animal(String?color,?String?size){
		this.color?=?color;
		this.size?=?size;
	}
}

//?子類Dog繼承父類Animal
class?Dog?extends?Animal(){

????//?子類繼承父類,需要調用父類的構造方法,使用super關鍵字即可
????public?Dog(String?color,?String?size,?String?test)?{
		super(color,?size);?//?必須放在第一個構造函數第一行
	}
}

下面是你想達到的效果:

public?class?Animal?{

	private?String?color;
	private?String?size;
	
	//?顯示定義無參構造函數
	public?Animal(){}
	
	public?Animal(String?color,?String?size){
		this.color?=?color;
		this.size?=?size;
	}
}

class?Cat?extends?Animal{
	
	public?Cat(String?color,?String?size,?String?test){
		super();?//?其實也是調用了父類的無參構造方法,編譯器默認調用而已,也可以不寫該super()
	}
}


查看完整回答
4 反對 回復 2016-07-31
?
qq___571

TA貢獻11條經驗 獲得超1個贊

典型的多態問題 編譯看父類運行看子類 構造方法也一樣

查看完整回答
反對 回復 2016-07-31
?
好奇的小豬

TA貢獻1條經驗 獲得超0個贊

子類重寫父類的方法,參數類型和個數要一樣。

查看完整回答
反對 回復 2016-07-31
?
大咪

TA貢獻785條經驗 獲得超332個贊

579d9c2c0001db2e05000198.jpg

579d9c2d0001fe0e05000203.jpg



父類中你沒有定義boolean song,所以報錯...也是不滿足父類構造器中沒有這個屬性。。。。


查看完整回答
反對 回復 2016-07-31
  • Goddess_chkx
    Goddess_chkx
    幫我看一下底下一個我的回復,幫我解答一下
  • 大咪
    大咪
    下面那個問題其實也是你輸出的問題,在子類dog類中你在控制臺輸出的不是子類嗎,而父類的構造方法在控制臺輸出也要寫在父類里的呀,所以你寫system.out父類這句話應該寫在animal類中,這樣當你調用子類方法時候,父類的構造方法會先打印輸出,然后在顯示子類的構造方法。。你可以試試,看看是不是這樣
  • Goddess_chkx
    Goddess_chkx
    謝謝,看懂了,手機沒有收不到你的回復提示,現在才看到,抱歉。
點擊展開后面1
?
Goddess_chkx

TA貢獻15條經驗 獲得超30個贊

子類不滿意父類的構造器,想重新寫一個構造器,但是必須要調用父類的構造器,為什么必須要調用父類的構造器,是不是你后面說的要先創建父類對象,調用父類的構造器,然后再創建子類對象,調用子類的構造器。那它干嘛不去父類里調,要在子類里再寫一遍,還有既然是先調用父類構造器,再調用子類構造器,為什么我圖片中打印出來只有子類(我還以為是先打印父類再打印子類,不解)
579d81510001acbf04080306.jpg

查看完整回答
反對 回復 2016-07-31
  • dreamertn9527
    dreamertn9527
    對,子類執行需要初始化父類。而我們知道,父類初始化就是通過構造器初始化的,所以需要子類調用父類構造器進行舒適化。還有,你子類那個調用父類寫的有問題。不是你那樣的啊
  • 9 回答
  • 0 關注
  • 2221 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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