構造方法

首先說明方法和屬性的區別:

在使用點操作符(.)調用方法和屬性的時候,方法的後面有小括號,屬性的後面沒有小括號。簡單的來說有括號的就是方法,沒有括號的就是屬性。

那麼我們會想一下在新建一個對象的時候

Object obj = new Object();

用紅色標記的東西是不是一個方法,答案當然是肯定的,可是這個方法跟我們正常使用的好像不是太一樣,我們正常調用一個方法是通過對象名.方法名(參數列表)(不要忘了點操作符)。

可是Object()這個方法沒有通過對象名.方法名來調用,那麼這個方法是什麼方法呢,沒錯這個方法就是構造方法。

那什麼是構造方法呢,構造方法是一種特殊的方法,這個方法用於類的對象的創建,只能通過new關鍵字來調用(不能通過對象.方法名來調用,因爲構造方法本身就是要new出來一個對象,在構造方法沒有執行完畢的時候,這個對象時還沒有被new出來的,因此不能調用普通方法),構造方法每調用一次就會產生一個新的對象,當類中沒有顯示的聲明一個構造方法時,編譯器會自動的創建一個沒有參數的構造方法。就像這樣的形式

public Object(){

}

另外注意一點的是編譯器自動生成的構造方法是沒有返回值的(連void也不能有,void代表不返回任何類型的數據,void雖然不是一種數據類型,但是它依然是一個返回值)另外可能大家還注意一點構造方法的方法名與類名相同,包括大小寫。

加入我們自定義了一個構造方法像這樣

publi Object(){

        System.out.println("這是自定義的構造方法");

}

那麼在編譯的時候,編譯器就不會再自動生成一個構造方法,而是使用用戶自定義的構造方法。

那麼你可能會問,既然編譯器會自動的生成構造方法,那麼這個有什麼用呢。

需要設置多次設置實例變量的值,偶爾開發人員還可能會忘記設置某個實例變量的值得時候就會使用到構造方法。這樣的話就會在對象聲明的時候給這個對象賦值。從而減少編碼人員忘記對某個實例變量賦值的情況。

可是這樣以來就把情況給限制死了。因爲我可能需要的確實是一個無參數的構造方法,這個方法的值需要用戶自定義的輸入,沒法剛開始就賦值,這個時候又需要無參數的構造方法,可能有時候又需要有參數的構造方法來限制等等。

這個時候就要用到方法的重載!

詳見這個鏈接:

http://blog.csdn.net/shenlan18446744/article/details/22663357

構造方法可以重載,在一個類的內部,構造方法之間相互調用使用關鍵字this(參數列表來調用)


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