非靜態類的靜態成員與非靜態成員的初始化順序

2022-04-06 21:44:46 字數 833 閱讀 2669

先執行下面一段**:

public class spooler

static spooler()

public static spooler getspooler()

else

}public void print()

public static void printstatic()

}1. 我們在用 spooler s = new spooler("");進行初始化物件時,無論靜態變數與非靜態成員變數的宣告順序如何,

程式的執行順序為:static variable --> static constructed function --> non-static variable --> non-static constructed function

2. 執行 spooler.printstatic();時,

程式的執行順序為:static variable --> static constructed function -->printstatic();

3. 利用singleton pattern 方式建立物件的例項時spooler s1 = spooler.getspooler();,

程式的執行順序為:static variable --> static constructed function -->getspooler() --> non-static variable --> non-static constructed function;

總結: 非靜態成員變數、函式和建構函式 是物件級別的,因此只有在類例項化的時候才會呼叫,靜態成員是類級別的,物件是類的物件,因此無論是類的例項化還是類中靜態成員的呼叫,都會進行靜態成員的初始化。

靜態成員與非靜態成員

靜態成員屬於類,而非靜態成員屬於類的例項。兩者的主要區別是static關鍵字,靜態成員使用static關鍵字宣告,放在型別之前,而非靜態成員則沒有。每次類被例項化之後,類中的非靜態成員就會隨著例項複製乙份過去,而靜態成員則仍然保留在類中。靜態成員和非靜態成員是不能互相呼叫。也就是說,靜態方法只能呼叫...

靜態成員與非靜態成員區別

若將類中的某個成員宣告為static 該成員稱為靜態成員類中的成員要麼是靜態 要麼是非靜態的一般說來靜態成員是屬於類所有的非靜態成員則屬於類的例項 物件 以下示例 演示了如何宣告靜態和非靜態成員 程式清單10 5 using system class test int x static int y ...

靜態成員和非靜態成員

類中的成員要麼是靜態的要麼是非靜態的。一般來說,靜態成員都歸屬於類所有,使用 static 關鍵字來宣告,不能在類的例項中訪問靜態成員 非靜態成員屬於類的例項 物件所有,不能按照類訪問靜態成員來訪問。下面用乙個例項來幫助理解 using system using system.collections...