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