c 類和成員的修飾詳細介紹

2022-09-26 09:42:12 字數 2349 閱讀 6922

基本概念:

一.類是對於業務處理物件的封裝, 包括狀態和行為的封裝.

二.類的成員種類:

1.常量: 資料值恆定不變的乙個符號

2.欄位: 字段表示乙個唯讀或者可讀寫的資料值. 通常用字段來標識乙個類或者類產生物件的某種狀態,

在實踐中,通常將字段標識為private, 避免從類/物件外破壞類/物件的狀態。

3.例項構造器(constructor):將新物件的例項字段初始化為良好初始狀態的一種特殊方法。

4.型別構造器,也就是靜態的constructor, 用來初始化類的靜態字段。

5.方法:乙個特殊的函式,用來更改或者查詢乙個型別或者物件的狀態。

6.屬性:用來封裝欄位在外部的訪問,避免直接訪問字段。

7.事件:封裝乙個委託鏈,通過某種觸發機制,通知委託鏈中的方法執行。

8.子型別:巢狀在型別中的型別,作用是分離複雜性。

9.操作符過載:重新定義在類所產生物件之間的特定操作:例如 +, -, ++等。

10.轉換操作符:定義如何顯示或者隱式的將類轉換為另外一種型別。

類的修飾關鍵字:

一. 可訪問性修飾:

1. public:用於非巢狀類,訪問無限制。

2.internal:用於非巢狀類,僅對定義程式集的所有**www.cppcns.com可見。

3.private:用於巢狀類,僅對包含它的類的成員可見。

4.protected:用於巢狀類,僅對包含它的類a以及a的派生類a_derived中的成員可見。

二.靜態類修飾符

1.static:用於定義永遠不需要例項化的類,例如console, math, enwww.cppcns.comvironment等。

2.靜態類不能繼承除system.object以外的基類,也不能實現介面

3.靜態類只能定義靜態成員

4.靜態類不能作為字段,方法引數或者區域性變數使用,因為它們都代表引用了乙個例項的變數。

三.分部類修飾符

1.partial: 用於將乙個類或者結構分解成不同的邏輯單元,目的在程式設計客棧於分解型別的複雜性。

2.常見場景在winform定義窗體或者控制項時,自動生成的前端單元和邏輯單元。

四.元件與多型修飾符

1.abstract: 表明乙個抽象類,不能直接生成該類的例項,只能通過繼承的方式實現。

2.sealed: 表明該型別不能用於基型別。

3.new:用於在衍生類中定義的巢狀型別,表明該巢狀型別與基類中的同名巢狀型別無關。

類成員的修飾關鍵字

一.可訪問性:不詳細解釋,與類的修飾大同小異

1.public

2.private

3.protected

4.internal

二.靜態成員:不詳細解釋

三.元件與多型修飾:

1.abstract: 用於基類成員,表示為了構造派生型別的例項,派生型別必須實現並且重寫這個方法。

2.virtual: 用於基類成員,表示這個成員可由派生型別重寫

3.override: 用於派生類成員,表示派生型別重寫了基型別的成員。

4.sealed: 用於基類成員,表示這個成員不能被派生型別重寫,只能用於方法。

5.new:用於派生類成員,表示這個成員與基類中的同名成員不存在過載關係。

本blpjh章知識最佳實踐

一.設計類和成員的可訪問性的最佳實踐:

1.定義類時,除非確定它將作為基類使用,不然應該講它指定為sealed。

原因是:派生型別的行為不可**,如果基類沒有進行密封,在後續版本中或者其他團隊成員定義的派生類有可能會破壞基類的狀態或者預期行為。

2.定義類時,如果不確定將在程式集外公布這個類,則應該將類指定為internal。

原因也是出於安全性方面的考慮。

3.在類的內部,所有資料字段都應該定義為private,原因是出於對狀態的保護。每個類/物件的狀態都應該只能由自己本身來控制程式設計客棧。

4.在類的內部,除非確定某個方法,屬性需要在子類中重寫,不然不要使用virtual。

原因有兩個,一是呼叫虛方法在clr中會消耗更多效能;二是虛方法會喪失基類對自身行為的控制權。

5.在類中定義巢狀類時,應將巢狀類修飾為private。這個規則在vs中會被強制檢查。

二.靜態類與單例模式的異同:

1.相同之處:都為型別成員提供單一入口

2.不同之處:

a.靜態類難以控制初始化時機

b.靜態類不支援基類,派生類,也不支援實現介面,對多型的支援性較差。

c.靜態類的實現較為簡單,不支援多型的情況下安全性較高

本文標題: c# 類和成員的修飾詳細介紹

本文位址:

c 中類和成員的修飾符介紹

類訪問修飾符 public 訪問級別最高,公共訪問沒有限制。internal 只允許在本程式集內訪問,其他程式集或站點引用其所在的程式集無法訪問此類。例如程式集librarya寫有classa,程式集libraryb引用librarya,在libraryb的類或方法裡無法通過librarya呼叫cl...

C 的類修飾符和成員修飾符

一 類修飾符 類修飾符 public internal partial abstract sealed static new protected private protected internal 1 public 訪問不受限制的,所有的本程式集以及其他的程式集裡面的類都能夠訪問 2 intern...

C 類和物件 const修飾成員函式

常函式 常物件 include using namespace std class person mutable int m age 特殊變數,加關鍵字mutable,即使在常函式中也可以修改這個值 void test1 intmain include using namespace std cla...