Java 構造函數之父類和子類

先來一句重要的結論:

如果一個類寫了有參構造函數,那麼無參的構造函數就不能用了。如果沒有構造函數,Java會默認有一個無參的構造函數。這個無參的構造函數可以不用寫出來。

在Java代碼中,會發現如果類有繼承的話,很多都寫了super()方法,而且還寫在了構造方法的第一行,不然就會報錯。

這個是Java的規定:子類繼承父類,子類的構造方法必須調用super()即父類的構造方法,而且必須放在構造方法的第一行。

但是有時候自己寫繼承的時候,卻沒有調用父類的構造方法,因爲:

如果父類"只"有無參構造方法,且不打算重寫子類的構造方法,爲節省代碼量,子類構造方法可以不寫,但是實際上是已經寫了,系統默認調用父類無參構造方法super(),即默認會在子類的構造方法中的第一行加上父類的無參構造方法 。

 

敲黑板,劃重點來了:

總結:子類構造函數必須在構造函數第一行調用父類構造函數,當子類構造函數沒有調用父類構造函數的時候,是因爲父類構造包含無參構造函數,爲了節省代碼,系統會自動添加調用。

如果父類有無參構造方法,子類構造方法的第一句是默認的super()且可以省略;如果父類沒有無參的構造方法,只有有參的構造方法,則super不能省略,super()中加上對應的參數就行了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章