一.構造函數的定義與作用
1.函數的名次與類同名
2.沒有返回值類型
3.不能使用retrun 關鍵字來返回一個值
注意》》:沒有返回值類型聲明不等同於“void”,void也是一種返回值的聲明(如果寫上了void,那就是一個普通的方法啦!)
二.構造函數的具體應用
1.構造函數也一般的函數一樣,都是可以被重載的.但是參數類型要不一致.而且構造函數是沒有返回值
構造函數如果被調用?
2.使用new關鍵字來創建對象的時候,會自動的調用一個類的構造函數.也可以在一個類中利用this();來調用其他的構造函數!
但是要注意:遞歸構造器調用. 普通函數的調用是:this.run(); 而構造函數調用是this();這樣來調用.
類必須要定義構造函數
3.其實每一個類中至少都有一個構造函數的,如果定義類時,沒有顯示的聲明任何的構造函數.系統會自動的爲這個類創建了一個不帶任何參數的構造函數.
如果你在一個類中創建了一個顯式的構造函數.那麼,虛擬機就不會自動的爲你創建
構造函數的訪問權限
4.一般在定義構造函數的時,如果沒有特殊的需求(就好單例)應該使用public關鍵字來修飾構造函數
在一些特殊的情況使用private關鍵字
new Person()虛擬機做了什麼事?
1.首先把類加載進來
2.爲這個類創建對象.並且爲成員變量初始化
3.自動的調用構造函數裏面的內容
三:this關鍵字
this的引用
1.this關鍵字一般用於方法內
2.this代表是一個對象的引用
具體引用那個對象,就看這個調用方法的對象
this的應用場景
1.當在一個類中要明確指出使用對象自己的的變量或函數時就應該加上this引用 ,此時this是指當前對象自己。
2.當你要把自己作爲參數傳遞給別的對象時,也可以用this關鍵字,此時this被作爲參數傳遞。
在內部類中也會經常使用this關鍵字,此時this代表內部類對象,如想引用外部類對象,this前面還需要加上外部類的類名。
在構造函數中,可以使用this(實參)來調用該類的其他構造函數,此時,應注意,調用代碼只能在第一行,在別的方法中不能這樣調構造函數,在一個構造函數中只能調一個構造函數(因爲都必須放在前面啦.所以只能調用一個)
四.函數的參數傳遞
1.基本數據類型在參數傳遞過程中值是不會改變的
(int ,byte,char,long,short,double,float,boolean )
2.引用數據類型在參數傳遞的過程中,其值是會被改變的.
五:static關鍵字之靜態變量
static關鍵字:在程序中使用static關鍵字來修飾一個成員
類什麼時候加載?
類只會加載一次,又因爲static修飾的變量是隨着類的加載而加載的. 所以其值是被任何的對象所共享.
1.靜態變量修飾的屬性是被所有類的實例所共享
2.靜態變量可以通過類名.屬性名直接訪問.(因爲它是隨着類的加載而加載.只能加載一次)
3.靜態變量在類的加載時就完成了初始化.
第六:Static關鍵字之靜態方法
1.用static修飾的方法是靜態方法
2.在類加載後,就可以直接通過類名來調用靜態方法
3.可以使用類名.方法名來直接訪問
4.靜態方法的內部是不能直接的訪問非靜態的成員
原因:
因爲靜態訪問在類加載後就可以直接調用了,而非靜態的成員則需要創建對象纔可以調用.所以是不能直接的來訪問非靜態的成員
5.靜態方法內部,只能通過創建該類的對象纔可以訪問非static的方法.靜態方法中是不能使用this關鍵字,因爲靜態方法沒有別的引用. 靜態方法中也沒有所謂的對象。
6.靜態的方法的應用:
. 一般在工具類上面.因爲工具類是可以直接調用調用就可以使用了嘛.
生產對象中也可以使用。