為什么java的構造方法中this()或者super()要放在第一行


java的構造方法中如果自己顯性的調用super()的時候一定要放在第一行,如不是的話就會報錯。

為什么一定要在第一行?

  super()在第一行的原因就是: 子類有可能訪問了父類對象, 比如在構造函數中使用父類對象的成員函數和變量, 在成員初始化使用了父類, 在代碼塊中使用了父類等, 所以為保證在子類可以訪問父類對象之前要完成對父類對象的初始化

  this()在第一行的原因就是: 為保證父類對象初始化的唯一性. 我們假設一種情況, 類B是類A的子類, 如果this()可以在構造函數的任意行使用, 那么會出現什么情況呢? 首先程序運行到構造函數B()的第一行, 發現沒有調用this()和super(), 就自動在第一行補齊了super() , 完成了對父類對象的初始化, 然后返回子類的構造函數繼續執行, 當運行到構造函數B()的"this(2) ;"時, 調用B類對象的B(int) 構造函數, 在B(int)中, 還會對父類對象再次初始化! 這就造成了對資源的浪費, 當然也有可能造成某些意想不到的結果, 不管怎樣, 總之是不合理的, 所以this() 不能出現在除第一行以外的其他行!

參考來自:http://www.cnblogs.com/iamzhoug37/p/4372934.html  本人純屬學習


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM