java構造器小結

轉載自:一個執着的程序員

當創建一個個對象時,系統會該對象的屬性默認初始化,基本類型屬性的值爲0(數值類型),false(布爾類型),把所有的引用類型設置爲null.

  構造器可以改變這種默認的初始化。

  構造器的作用:是創建Java對象的重要途徑,是不是說構造器完全負責創建java對象?????

  答:是創建java對象的重要途徑,通過new關鍵字調用構造器時,構造器也確實返回了該類的對象,但這個對象並不是完全由構造器負責創建的。

  系統調用構造器時的執行過程分析:

                        當調用構造器時,系統會爲該對象分配內存空間,並對該對象進行默認的初始化,這個對象已經產生了,這些操作在構造器執行 

   之前已經完成了。也就是在構造器的執行體執行之前,系統已經創建了一個對象,只是這個對象還不能被外部程序訪問,只能在構造器中,通過this引用它,當構造器的執行體結束之後,這個對象作爲該構造器的返回值被返回,同時還賦給另一個引用類型的變量。從而外部程序可以訪問該對象。

   **個人理解**:構造器作用,1.創建java對象的重要途徑. 2.對系統產生的對象初始化 3.並將該對象作爲返回值返回,是外部程序可以訪問.

 一個類中構造器之間的相互調用(一個構造器調用另一個構造的初始化代碼):構造器不能直接調用,必須使用new關鍵字調用,但是會導致系統重新創建一個對象。爲了避免重新創建對象,可以使用this關鍵字來調用相應的構造器

 this調用另一個構造器,只能在構造器中使用,而且必須作爲構造器語句的第一條語句。

super是java提供的一個關鍵字,是直接父類的引用。java程序創建某個類得對象時,會隱式的創建該類的父類對象,只要有一個子類對象存在,則一定存在一個與之對應的父類對 象。

 this,super:不能出現在static修飾的方法中,static修飾的方法是屬於類得,該方法的調用者是類而不是對象,也就不存在對應的對象以及父對象了,所以this,super引用就失去了意義。

使用super調用父類構造器必須出現在子類構造器的第一行。所以this調用和super調用不會同時出現。

子類構造器調用父類構造器的幾種情況:

   1.子類構造器的執行體的第一行用super顯式調用父類構造器,系統將根據super 調用裏傳入的實例列表調用父類對應的構造器

    2.子類構造器執行體的第一行是this顯式調用本類中重載的構造器,系統根據this調用裏傳入的實參列表調用本類中另一個構造器,執行本類中另一個構造器時,既會調用父類的構造器。

  3.子類構造器中既沒有this,也沒有super,系統將會在執行子類構造器之前隱式調用父類無參的構造器

不管上面哪種情況,當調用子類構造器來初始化子類對象時,父類構造器總會在子類構造器之前執行,不僅如此,執行父類構造器時,系統會再次上溯執行其父類的構造器。。。。以此類推。創建任何java對象,最先執行的總是java.lang.Object類得構造器
MeasureMeasure

發佈了19 篇原創文章 · 獲贊 36 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章