VR開發(fā)入門教程26:附加修飾符之Static
來源:
奇酷教育 發(fā)表于:
靜態(tài)類靜態(tài)類就是指由static修飾的類。靜態(tài)類是不能實(shí)例化的,我們直接使用它的屬性與方法,靜態(tài)類最大的特點(diǎn)就是共享。public static cl
靜態(tài)類
靜態(tài)類就是指由static修飾的類。靜態(tài)類是不能實(shí)例化的,我們直接使用它的屬性與方法,靜態(tài)類最大的特點(diǎn)就是共享。
public static class StaticTestClass
{
public static int n = 0;
public static void Add()
{
n++;
}
}
原則:
靜態(tài)類中的所有成員必須是靜態(tài)的。
靜態(tài)構(gòu)造函數(shù)
靜態(tài)構(gòu)造函數(shù):
靜態(tài)類可以有靜態(tài)構(gòu)造函數(shù),靜態(tài)構(gòu)造函數(shù)不可繼承。
靜態(tài)構(gòu)造函數(shù)可以用于靜態(tài)類,也可用于非靜態(tài)類。
靜態(tài)構(gòu)造函數(shù)無訪問修飾符、無參數(shù),只有一個(gè) static 標(biāo)志。
靜態(tài)構(gòu)造函數(shù)不可被直接調(diào)用,當(dāng)創(chuàng)建類實(shí)例或引用任何靜態(tài)成員之前,靜態(tài)構(gòu)造函數(shù)被自動(dòng)執(zhí)行,并且在某次運(yùn)行期間只執(zhí)行一次。
靜態(tài)成員
類成員由static關(guān)鍵字修飾,可以在未創(chuàng)建類的對象前就用類名直接調(diào)用類成員。
類中的變量可以分為實(shí)例成員變量和類變量(靜態(tài)變量),靜態(tài)變量能夠完美的體現(xiàn)出Static的共享特性,如果在某一時(shí)刻類中的靜態(tài)變量被修改了,那么對此類的所有對象來說,靜態(tài)變量都已經(jīng)發(fā)生了變化。
存儲(chǔ)結(jié)構(gòu)的差別:
實(shí)例變量每次創(chuàng)建對象時(shí)才被分配空間
類變量當(dāng)類被加載時(shí)就分配空間
訪問方式的差別:
實(shí)例變量必須通過對象訪問
類變量不需要 直接使用類名.訪問
類成員可以分為實(shí)例成員方法和類成員方法,我們來對比一下這兩種方法:
1、類方法在類被加載時(shí)就分配入口地址
2、實(shí)例方法在創(chuàng)建第一個(gè)對象時(shí)分配入口地址,這個(gè)地址被所有對象共享
3、類方法和實(shí)例方法中的局部變量當(dāng)方法被調(diào)用時(shí)才分配空間
4、類方法只能訪問類方法和類變量
實(shí)例方法能訪問類方法、類變量、實(shí)例方法、實(shí)例變量。類方法中不能使用this、base等需要對象的關(guān)鍵字。
類內(nèi)部的關(guān)系調(diào)用圖
一.多類的加載次序
1.優(yōu)先加載Main所在的類
2.執(zhí)行Main方法
3.執(zhí)行過程中使用到哪個(gè)類 加載哪個(gè)類
二.單個(gè)類的加載次序
1.加載類中的靜態(tài)變量 靜態(tài)方法
2.執(zhí)行靜態(tài)構(gòu)造為靜態(tài)變量進(jìn)行初期化
3.當(dāng)產(chǎn)生對象new對象時(shí) 分配成員變量和成員方法到對象中
注意:1、非靜態(tài)的可以調(diào)用靜態(tài)和非靜態(tài)
2、靜態(tài)的只能調(diào)用靜態(tài)的