靜態類,靜態方法,靜態變數與非靜態之間的區別

2021-07-16 20:46:57 字數 1257 閱讀 3842

靜態類:

1:僅包含靜態變數和靜態方法。

2:無法例項化。

3:不能包含例項建構函式。

4:是密封的。

非靜態類:

1.可以包含非靜態成員,也可以包含靜態成員。

2.每次例項化都是乙個新的物件。

3.可以不顯示例項化,因為內部有乙個預設的靜態建構函式,不可過載,當建立類例項或引用任何靜態成員之前,靜態建構函式被自動執行,並且只執行一次。

4.也可以通過 類名.方法名或變數名 訪問靜態成員

靜態方法:

1.靜態方法不能引用非靜態變數

4:靜態方法只能被過載,而不能被重寫,因為靜態方法不屬於類的例項成員;當然也不能是virtual和abstract型別的

非靜態方法:

1.可以同時引用 非靜態變數和靜態變數

靜態變數

1.只有乙個副本,例項化類,不會初始化靜態變數的值。屬於類所有,生命週期和**運用程式一樣長

2.c# 不支援靜態區域性變數(在方法內部定義靜態變數)。

非靜態變數

1.每次例項化都是乙個新的變數。自然要初始化值

靜態建構函式

1:靜態類可以有靜態建構函式,靜態建構函式不可繼承;

2:靜態建構函式可以用於靜態類,也可用於非靜態類;

3:靜態建構函式無訪問修飾符、無引數,只有乙個 static 標誌;

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

只執行一次。

問題:1.靜態類可以例項化嗎?靜態類可以有非靜態方法和變數嗎?靜態類的方法和變數怎麼呼叫?

a:靜態類不能例項化;不能有非靜態方法和變數;物件名.方法名或變數名呼叫。

2.非靜態類可以包含靜態變數和方法嗎?怎麼呼叫?

a:非靜態類可以包含靜態變數和方法;類名.方法名或變數名呼叫

3.靜態方法可以引用非靜態變數嗎?

4.例項類中的靜態變數和非靜態變數有什麼區別?

a:靜態變數只有乙個副本,例項變數每例項化話一次都是乙個新的變數,變數值都會初始化。 而靜態變數變數的生存週期和**運用程式生命週期長度一樣。值會累加。

使用推薦:

當定義的類不需要進行例項化時,我們使用靜態類;如果需要例項化物件,需要繼承等特性時,應該使用非靜態類。

盡量用例項變數,少用靜態變數。因為例項變數隨著物件的銷毀而銷毀。靜態變數整個運用程式銷毀才銷毀。就像js中應該多使用區域性變數少用全域性變數一樣。

將需要同時也被靜態方法呼叫的變數設為靜態的,那麼靜態方法和例項方法都能訪問.

靜態類,靜態方法,靜態變數與非靜態之前的區別

靜態類 1 僅包含靜態變數和靜態方法。2 無法例項化。3 不能包含例項建構函式。4 是密封的。非靜態類 1.可以包含非靜態成員,也可以包含靜態成員。2.每次例項化都是乙個新的物件。3.可以不顯示例項化,因為內部有乙個預設的靜態建構函式,不可過載,當建立類例項或引用任何靜態成員之前,靜態建構函式被自動...

靜態類,靜態方法,靜態變數與非靜態之前的區別

靜態類 1 僅包含靜態變數和靜態方法。2 無法例項化。3 不能包含例項建構函式。4 是密封的。非靜態類 1.可以包含非靜態成員,也可以包含靜態成員。2.每次例項化都是乙個新的物件。3.可以不顯示例項化,因為內部有乙個預設的靜態建構函式,不可過載,當建立類例項或引用任何靜態成員之前,靜態建構函式被自動...

非靜態函式,非靜態變數與靜態函式,靜態變數

一 函式 函式的引入可以減少程式的目標 實現程式 的共享。但是,函式呼叫也需要一些時間和空間方面的開銷,因為呼叫函式實際上將程式執行流程轉移到被調函式中,被調函式的程式 執行完後,再返回到呼叫的地方。這種呼叫操作要求呼叫前保護現場並記憶執行的位址,返回後恢復現場,並按原來儲存的位址繼續執行。對於較長...