一:有參數構造方法
在之前我們要為一個對象賦值,先要創建好對象之后然后“對象名.屬性名”或者調用屬性的setter為屬性賦值。但是在很多時候覺得這樣做很麻煩,最好的做法是在創建對象的時候完成屬性的初始化操作,此時需要使用到有參數構造方法方能完成該功能(有人把構造方法叫做構造器)。
DEMO:定義有參數構造方法
上面定義了四個有參數構造方法,發現了構造方法可以重載,
書寫的習慣是重載的構造方法按照參數的個數進行升序排序。但是如何去調用有參數的構造方法呢?
DEMO:調用有參數構造方法
此時發現了我們不需要像之前一樣,要為對象的屬性賦值就必須先創建對象再使用“對象名.屬性名”或者使用setter 方法去實現了,而是直接使用有參數的構造方法去實現。
DEMO:繼續觀察代碼
此時提示“這個無參數構造Student()方法未定義”,在之前我們說了JVM會默,認為類提供無參數構造方法,但是這只能是在沒有任何有參構造方法的條件下,現在我們定義了四個有參數構造方法(JVM認為你不需要無參數構造方法了),所以JVM不再提供無參數的構造的構造方法了。
所以我們定義 了有參數構造方法那么也需要顯示的定義出無參數構造方法。
DEMO:顯示定義無參數構造方法
總結:
1、構造方法的出現是為了方便為對象的屬性初始化值
2、一般在類中構造方法的順序都是按照參數的個數去升序排序的
3、如果定義了有參構造方法那么JVM就不會在提供無參數構造了,所以如果我們定義了有參構造那么無參構造也要顯示的定義出來。
二:Java無參構造方法
一:構造方法給的概念
在之前我們使用過方法,在調用的方法的是時候需要在方法名稱之后加.上小括號,括號里面可以傳遞實參,那么我們在創建一個對象的時候使用的是“new類名()”的方式去實現,其實上這也是一種方法,但是這個方法我們沒有明確的去定義,那為什么可以調用呢?觀察代碼。
DEMO:觀察代碼
以上的代碼在創建的對象的時候使用“Student()”,發現了在“Student”之后使用小括號,這和方法的調用很相似,其實“Student()”就是-一個方法,是一個特殊的方法-構造方法,發現了構造方法的名稱和類名一樣,而且一定是在new關鍵字之后調用的。但是我們沒有在Student類中看到這個方法依然能夠調用,原因是JVM(Java的虛擬機,暫時不用管,你就認為是系統,后面我們講解JVM內存模型的時候會分析)系統默認為該類提供了無參數構造方法,所以我們才能調用。
我們也可以顯示的將該方法定義出來。
DEMO:顯示的定 義構造方法
此時我們顯示的定義了一個五參數構造方法,構造方法是在什么時候調用的呢?如何很明顯的看出調用了構造方法?
DEMO:觀察構造方法調用的時機
總結:
1、構造方法的概念(構造方法的出現是為了在實例化對象的時候可以為對象的屬性初始化值)。
2、默認jvm會為每個類提供一個無參數構造方法。
3、構造方法的特征和它與普通方法的區別你要清楚。
最后
歡迎大家一起交流,喜歡文章記得關注我點個贊喲,感謝支持!