物件導向 靜態類與非靜態類的區別

2021-08-11 23:14:14 字數 1124 閱讀 7956

靜態類和非靜態類重要的區別是在於靜態類不能被例項化,也就是說不能使用  new 關鍵字建立靜態類型別的變數。使用static關鍵字來宣告靜態類,這樣的意義在於:首先,它防止程式設計師寫**來例項化該靜態類;其次,它防止在類的內部宣告任何例項欄位或方法。

關鍵字:  static

呼叫方式:< 靜態類名.靜態方法 >

注意:   1.在靜態類中只能訪問靜態成員;  2.在靜態類中只能有靜態成員;

1:僅包含靜態成員。

2:無法例項化。

3:是密封的。

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

1:非靜態類可以包含靜態的方法、字段、屬性或事件;

2:無論對乙個類建立多少個例項,它的靜態成員都只有乙個副本(體現在在a例項改變了某個靜態變數的值將影響所有的例項);

3:靜態方法和屬性不能訪問其包含型別中的非靜態欄位和事件,並且不能訪問任何物件的例項變數;

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

5:雖然字段不能宣告為 static const,但 const 欄位的行為在本質上是靜態的。這樣的字段屬於類,不屬於類的例項。因此,可以同對待靜態字段一樣使用 classname.membername 表示法來訪問 const 字段;

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

非靜態類裡即可有靜態成員,也可以有非靜態成員。

非靜態裡的靜態方法可直接呼叫即 :<    非靜態 類名.靜態方法 >

非靜態裡的非靜態方法需要例項化後才能被呼叫,格式如下:

<  非靜態類名   變數=new 非靜態類名();>

非靜態類是儲存有狀態的一類操作過程,例如語言包的非靜態類,宣告了之後,可能獲取語言的種類,語言元素和一些附加的東西。

靜態類可以視為類庫里都是單一的過程,不存在「狀態」的概念,就可以使用靜態類。

非靜態類可以包含靜態方法,但靜態類不能包含非靜態方法。  

當定義的類不需要進行例項化時,我們使用靜態類;如果需要例項化物件,需要繼承等特性時,應該使用非靜態類,並且將統一使用的變數和方法設為靜態的,那麼所有例項物件都能訪問。  靜態方法的使用效率比非靜態方法的效率高。

按照上面的概念,只要記憶體夠用,都可以使用靜態的。使用靜態方法會帶來什麼問題呢

C 靜態類與非靜態類 靜態成員的區別

靜態類 靜態類與非靜態類的重要區別在於靜態類不能例項化,也就是說,不能使用 new 關鍵字建立靜態類型別的變數。在宣告乙個類時使用static關鍵字,具有兩個方面的意義 首先,它防止程式設計師寫 來例項化該靜態類 其次,它防止在類的內部宣告任何例項欄位或方法。靜態類是自c 2.0才引入的,c 1.0...

靜態類 和 非靜態類的區別

1 不能在靜態類中宣告例項成員 變數和方法 2 非靜態類中可以呼叫靜態類中的成員和方法 3 呼叫靜態類中的成員或方法時不需要例項化 4 非靜態類中可以宣告靜態成員或靜態方法 5 靜態方法的使用效率比非靜態方法的使用效率高 6 靜態方法與靜態成員變數一樣,屬於類本身,在類裝載的時候被裝載到記憶體,不自...

靜態類和非靜態類的主要區別

靜態類和非靜態類的主要區別 主要區別在於靜態類不能例項化,靜態類編譯器能夠執行檢查確保不是偶然的新增例項成員,c 編譯器會自動把它標記為sealed,靜態類中不能建立非靜態的方法,即靜態方法中只能建立靜態方法,但在非靜態類中可以呼叫靜態方法。靜態類的主要特性 1 僅包含靜態成員。2 無法例項化。3 ...