private:私有,權限修飾符,用於修飾類中的成員(成員變量,成員函數)。
私有只有在本類中有效。
將age私有化以後,類以外即使建立了對象也不能直接訪問。
所以就需要person類中提供對用的訪問方法。
夠造函數:對象一建立就運行,作用是給對象初始化。
夠造函數小細節。
當一個類中沒有構造函數時、系統默認給類加一個空參數的夠着函數否者對象建立不出來
構造函數和一般函數在學法上不同
在運行上也不同
構造函數是在對象一建立就運行,給對象初始化
一般方法是對象調用才執行,給對象添加功能。
什麼時候定義構造函數時
當分析事物時,該事物存在具備一些特性或者行爲,那麼將這些內容定義進構造函數中,
構造代碼塊,
作用 :給對象進行初始化
對象已建立就運行,優先於構造函數執行。
和構造函數的區別:
構造代碼塊是給所有對象進行統一初始化
構造函數是給對應的對象初始化。
構造代碼塊裏面定義的是所有的對象都共性的內容。。。
static
靜態:
用法:是一個修飾符,用於修飾成員(成員變量,成員方法)。
當成員被靜態修飾後,就多了一個調用方式,除了被對象調用以外,還可以被類名調用,類名.靜態成員。
靜態代碼塊。
格式:
static
{
靜態代碼塊執行語句。
}
特點:隨着類的加載而執行,只執行一次,並優先於主函數。
用於給類進行初始化。
static。特點:
1.隨着類的加載而加載,隨着類的消失而 消失。
2.優先於類的對象存在。
明確一點:靜態是先存在的,對象是後存在的
3.被所有的對象共享
4.可以直接被類名所調用。
實例變量,和類變量的區別:
1.類變量
隨着類的加載存在方法區中,隨着類的消失而消失。
實例變量
隨着對象的建立存在於堆內存中
2.生命週期:
類變量生命週期最長,隨着類的消失而消失,
實例變量,隨着對象的消失而消失,
靜態的使用注意事項:
1.靜態方法只能訪問靜態成員。和靜態方法。
非靜態方法,既可以訪問靜態,也可以訪問非靜態。
2.靜態方法中不可以定義this,super關鍵字,
因爲靜態優先於對象存在,所以靜態方法中不可以出現this。
3.主函數是靜態的。
靜態有利有弊
利。對對象的共享數據進行單獨空間的存儲,節省空間。沒有必要每一個對象中都存儲一份可以直接被類名調用。
弊端:生命週期過長。
訪問出現侷限性(靜態只能訪問靜態。)
什麼時候使用靜態?
要從兩方面下手:
因爲靜態修飾的內容有成員變量和函數。
什麼時候定義靜態變量(類變量)呢?
當對象中出現共享數據時,該數據被靜態所修飾。
對象中的特有數據要定義成非靜態存在於堆內存中。
什麼時候定義靜態函數呢?
當功能內部沒有訪問到非靜態數據(對象的特有數據)。
那麼該功能可以定義成靜態的。