Java基礎之 構造方法

  • 是什麼?

構造方法是一種特殊的方法,它是一個與類同名的方法。對象的創建就是通過構造方法來完成,其功能主要是完成對象的初始化。當類實例化一個對象時會自動調用構造方法。構造方法和其他方法一樣也可以重載。

  • 怎麼做?

①方法名和 類名相同

②在方法名的前面沒有返回值類型的聲明

③在方法中不能使用return語句返回一個值

④在創建對象時,要調用new,如:book b1=new book();

⑤當沒有指定構造方法時,系統會自動添加無參的構造方法

⑥當有指定構造方法時,無論該構造方法是有參,還是無參,系統都不會再自動添加無參的構造方法

⑦構造方法的重載:方法名相同,但參數不同的多個方法,調用時會自動根據不同的參數選擇相應的方法
這裏寫了三個構造方法,主函數中Test t=new Test( )調用無參的構造方法,得到輸出如下:在這裏插入圖片描述
對主函數進行部分改動
在這裏插入圖片描述
主函數創建對象時給了兩個參數Luna 和20,得到輸出如下:
在這裏插入圖片描述
總之,系統在創建對象的時候會根據你所給的參數調用構造方法。當沒有寫構造方法時,系統默認給了無參,一旦你手寫了構造方法,系統就會取消給的無參構造方法,比如第一幅圖如果刪掉無參的構造方法系統就會報錯。

  • 爲什麼?

至於原因,菜鳥表示也不太懂,我在網上看到了一些說法複製過來

1.沒有構造方法就沒法new,沒寫構造方法是因爲有個默認無參構造方法。有參構造方法可以使對象在實例化時做些事情,完成必須的操作。比如開個公司,必須先拿證,置辦辦公場地吧(cr.探索者一號)

2.構造方法就是一種的特殊方法,只不過這個方法在對象創建的時候就被調用,用於初始化,就執行一次。爲什麼用這樣的形式,因爲可以封裝功能,比如可以在構造方法中設定一些限制,輸出語句,也可以複用,比如在構造方法裏調用其他的構造方法(cr.天上掉個大餡餅)

3.關於這個問題我覺得你最好去查閱一下《java編程思想》。我的理解是這樣的:1,首先得明白不通過構造函數,能不能初始化類內的成員變量(域)?答案是可以,通過靜態變量,或初始化塊等手段就可以完成變量的初始化。然而通過這樣的手段,每次new的時候都執行了一樣的操作:一成不變的值賦值給了變量。而通過構造函數則不一樣,因爲函數可以有參數,而且可以被重載,通過傳入參數的不同,可以一定程度實現類的動態賦值。而不同的重載構造函數讓類的實例化更加多樣。(cr.月涼西廂)

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