C 基礎 靜態Static關鍵字

2021-10-06 06:37:47 字數 1485 閱讀 3276

目錄

靜態static關鍵字

3.1靜態類

3.2靜態變數

3.3靜態方法

3.4靜態建構函式

3.5什麼時候適合用static修飾

3.6使用static時需要注意的地方

static靜態的,不變的,在某個類中只有乙個,不會因例項化物件的不同而不同。static可以修飾類、字段、屬性、方法 等。如乙個方法前加上static修飾後要對其進行呼叫可以直接通過類名點出來,不用再對類進行例項化

只能包含靜態成員(靜態方法或靜態變數),非靜態成員是不能使用的,而非靜態類可以包含靜態的方法、字段、屬性或事件,且無論對這個非靜態類建立多少個例項,它的靜態成員都只有乙個。

不能對其實例化。

不能被繼承,因為靜態類本質是乙個抽象的密封類。

不能包含例項建構函式

static只能修飾成員變數,不能修飾區域性變數。

表示每次重新使用該變數所在方法、類或自定義類時,變數的值為程式這次執行最後一次為變數賦值時的值。

靜態變數一直記錄變數的值,一直到下次賦值時。

不同執行緒下訪問的靜態屬性總是同一屬性,如果某一線程更改了屬性值,將造成其他執行緒訪問屬性值的錯誤。因此方法中訪問同一靜態屬性就需要使用lock關鍵字,或建立互斥物件來保持靜態屬性在同一時間只能被某一物件的屬性或方法 訪問

靜態成員只被建立一次,所以靜態成員只有乙份,而例項成員有多少個物件,就有多少個成員

在方法(函式)前用static修飾,表示此方法為所在類或所在自定義類所有,而不是這個類的例項所有。

在靜態方法中只能直接呼叫同類中其他的靜態成員(包括變數和方法), 而不能直接訪問類中的非靜態成員。

每乙個執行緒在同一時間訪問的靜態方法都是不同的,因此靜態方法在多執行緒呼叫中不會產生衝突。

在靜態方法中不能直接呼叫例項成員,因為靜態方法被呼叫時,物件還有可能不存在。

this/base關鍵字在靜態方法不能使用,因為有可能物件還不存在。

靜態方法只能被過載,不能被重寫,因為靜態方法不屬於類的例項成員

靜態類可以有靜態建構函式,靜態建構函式不可繼承。

可以用於靜態類,也可用於非靜態類。

無訪問修飾符、無引數,只有乙個static標誌。

不可被直接呼叫,當建立類例項或引用任何靜態成員之前,靜態建構函式被自動執行,並且只執行一次

當變數需要被共享時可以將變數定義為靜態變數。

當方法需要被反覆呼叫時可以將方法定義為靜態方法。

當乙個類中包含的成員都是靜態時可以將類定義為靜態類

靜態類中的所有成員也必須是靜態

非靜態類中的成員可以是靜態也可以是非靜態

乙個靜態的函式內部只能使用該函式外部的靜態成員

乙個類中的公開靜態成員,在另外乙個類中通過直接使用類名點的形式呼叫這個成員      

messagebox.show(s);

random r = new random();

r.next(0, 10);

C 基礎 靜態成員,static關鍵字

當宣告乙個類成員為靜態時,意味著無論建立多少個類的物件,只會有乙個該靜態成員的副本。關鍵字static意味著只有乙個該成員的例項。靜態變數用於定義常量,因為它們的值可以通過直接呼叫類而不需要建立類的例項來獲取。比如,定義類的成員變數為static的 1 class staticvar25 publi...

靜態Static關鍵字

靜態關鍵字修飾成員變數 如果乙個成員變數使用了static修飾詞,那麼這個變數就是屬於類的,而不是屬於物件的,多個物件共享乙份資料 public class student public static void setroom string room public student string na...

靜態static關鍵字

static修飾類的屬性,則這個類的所有物件都共享同乙份。一旦使用static修飾成員方法,那麼這就是靜態方法。靜態方法不屬於物件,而是屬於類的。如果沒有static關鍵字,那麼必須首先建立物件,然後通過物件才能訪問它。如果有了static關鍵字,那麼不需要建立物件,直接通過類名來使用它。注意事項 ...