- java的構造方法
new +構造方法 去創建一個對象
跟普通方法的區別:
1.構造方法沒有返回值類型的聲明
2.每一個類至少有一個構造方法
如果沒有生命JVM會默認給一個無參數的構造方法,一旦聲明了構造方法就不在默認給你。
3.構造方法名稱必和須跟類名一致
4.構造方法的調用
public Person()
{
System.out.printf("構造方法");
}
注意:如果寫成了public void Person() 就成了普通的方法了
普通方法:對象存在,通過變量名.方法名()調用
構造方法:new 構造方法名()調用,一旦new構造方法()就創建一個新的對象
構造方法只存在對象創建的時候調用
作用:語法規定通過new+當前類的構造方法去創建一個對應的類型的對象。
實際中對象是否創建時由new決定,構造方法是在對象創建成功之后執行的,用于做初始化設置,并且構造方法只在當前對象創建成功時執行一次,以后就不會執行。
注意:一般情況下我們會聲明參數的構造方法,在對象創建的對成員變量進行賦值(復用性)
- 方法重載 overload
java中允許在一個類中聲明多個名稱一樣,但是參數不同的多個方法
作用:在創建對象的時候初始化的時候提供多種需求。
調用:
根據實際傳入的參數來識別。
參數不同:
1.參數的個數不同。
2.參數的類型不同。
3.參數類型的順序不同,也算不同(前后參數類型需要不同)
注意:在方法重載中,當嚴格匹配匹配不到方法時候,就會通過就近匹配方法。
就近匹配:按照參數的默認轉換的原則
注意:一旦就近匹配到多個方法的時候會出現語法的錯誤,就需要按照嚴格匹配。
注意:重載對個構造方法一般是為了在創建對象的時候,可以提供多種初始化設置供使用者選擇。
-
this
1.隱含的局部變量
在方法中指向調用該方法的對象()
使用:當成員變量與局部變量同名的時候,通過this說明哪一個是成員變量。(this指向的是成員變量)
F11進入調試狀態
F5進入構造方法
使用場景.png
不加this 成員變量和局部變量同名,局部變量的優先級會比較高
這樣會能知道改填什么參數.png
2.作為當前類的構造方法名存在
作用:在構造方法第一句話去調用其他重載的構造方法(ps:放在第一句話是為了只聲明一個對象。)
實現代碼復用.png
- 靜態修飾符 static
作用:修飾成員變量、方法
修飾成員變量,該成員變量就是靜態的成員變量,不在依賴與對象,是這個類所有對象共有的。
注意:靜態的成員變量在類加載的時候會被創建(對象生成之前就創建了),并且只會被創建一次。
使用:類名.靜態成員變量名(因為不論是哪一個對象改變靜態變量都會改變,所以可以直接類名來調用)
執行結果都為22.png
name指向相同的常量.png
2.修飾方法,該方法就變成靜態方法,不在依賴于某個對象(方法里面沒有使用到任何一個成員變量)。
使用:類名.靜態的方法名(參數);
與非靜態方法的區別:
非靜態的方法調用的前提:對象存在。
非靜態的方法什么都可以調用
靜態的方法不可調用非靜態的成員變量以及方法(成員變量不知道是哪一個變量)