靜態與非靜態的區別
(1)在非靜態類中既可以有實例成員,也可以有靜態成員(static修飾)。
(2)在調用靜態成員的時候要使用:對象名.實例成員。
(3)在調用靜態成員的時候要使用:類名.靜態成員。
總結:靜態成員使用類名去調用,非靜態成員使用對象名去調用。靜態函數中只能訪問靜態成員,不允許訪問實例成員 (靜靜),實例函數中既可以使用靜態成員,也可以是實例成員。
靜態類中只允許有靜態成員,不允許出現實例成員。
使用:什麼時候使用靜態,什麼時候使用非靜態
(1)把類當成“工具類”去使用,考慮寫成靜態類 例如:console類
(2)靜態類在整個項目中資源共享---------占內存,,,,只有程序全部結束後,靜態類才會釋放資源。
非靜態創建對象並賦值(逐一賦值)會造成代碼冗余,所以產生構造函數來賦值
構造函數:
作用:初始化對象(給對象的每個屬性依次賦值),構造函數是一個特殊的方法。
(1)構造函數沒有返回值,沒有Void
(2)構造函數名稱必須和類名一樣。
語法:
public 類名(參數)
{
屬性賦值;
}
創建對象時調用構造函數 關鍵字new
new關鍵字做了三件事:
(1)在內存中開辟了一塊空間。
(2)在開辟的空間創建對象。
(3)調用對象的構造函數進行初始化對象。
類當中默認有一個無參的構造函數 ,默認的構造函數會被我們新建的構造方法覆蓋
無參的構造函數:public 類名()
{
}
有參的構造函數:public 類名(參數)
{
賦值;
}
在創建對象時(new)傳參 n=new 類名(實參)
當類中已有重載的構造函數時,需要無參的構造函數需重新寫無參構造函數。
this關鍵字:
作用:(1)表示當前類的對象
(2)調用本類當中的構造函數(重載中不全參數的構造函數去調用全參的構造函數)
語法::this()
例如:public Student(部分參數):this(全部參數值)
析構函數:~類名(){}
作用:當程序結束的時候,析構函數才執行 -----------》釋放資源