C#的类修饰符和成员修饰符
類修飾符:public、internal、 partial、abstract、sealed、static、new、protected、private、protected internal
1、public:訪問不受限制的,所有的本程序集以及其他的程序集里面的類都能夠訪問
2、internal:本程序集內的類可以訪問
3、partial:部分類,可以將一個類分成幾部分寫在不同文件中,最終編譯時將合并成一個文件,且各個部分不能分散在不同程序集中
4、abstract:修飾類的時候表示該類為抽象類,不能夠創建該類的實例。修飾方法的時候表示該方法需要由子類來實現,如果子類沒有實現該方法那么子類同樣是抽象類;且含有抽象方法的類一定是抽象類
5、sealed:修飾類時表示該類不能夠被繼承
6、static:修飾類時表示該類時靜態類,不能夠實例化該類的對象,那么這個類也就不能夠含有對象成員,即該類所有成員為靜態
7、new:只能用于嵌套的類,表示對繼承父類同名類型的隱藏
8、protected、private、protected internal:只能用于嵌套的類
嵌套類型的訪問修飾符為public、internal、protected、private和protected?internal
二、成員修飾符
?
成員修飾符:public、protected、private、internal、protected internal、abstract、virtual、override、readonly、const、sealed、new
1、public:訪問沒有限制,所有的本程序集以及其他的程序集里面的對象都能夠訪問
2、protected:?自身成員以及子類成員可訪問
3、private:只有自身成員才能夠訪問
4、internal:本程序集內的成員可以訪問
5、protected internal?內部保護訪問。只限于本程序集或是其他程序集繼承的子類訪問,其他不能訪問
6、abstract:修飾方法的時候表示該方法需要由子類來實現,如果子類沒有實現該方法那么子類同樣是抽象類;且含有抽象方法的類一定是抽象類。abstract不能和new同時用。
7、static 修飾構造函數時,構造函數不能含有任何參數,不能含有修飾符,構造函數不能對對象成員進行初始化操作。但是能夠對靜態成員進行初始化或者調用。在靜態構造函數中初始化的靜態成員為最終初始化結果。
8、virtual:修飾方法成員,表示虛方法。父類可以含有該類的實現,子類可以覆寫該函數。
9、override:表示該方法為覆寫了父類的方法。
10、readonly:修飾字段,表示該字段為只讀字段。
注意:readonly修飾引用類型時由于操作不當可能修改該只讀對象狀態。
readonly是運行時只讀,內容在運行時確定,所以修改了readonly類型成員后無需重新編譯即可生效。
11、const:修飾字段,表示該字段為只讀字段。并且在編譯時必須能夠明確知道該字段的值,其值是硬編碼到程序中去的,修改了該類型成員后需要重新編譯才能使修改生效。
Readonly不能修飾局部變量,const可以修飾局部變量。
12、sealed: 修飾方法時表示該方法不能被覆寫。同時對一個類作abstract和sealed的修飾是沒有意義的,也是被禁止的。
13、new修飾符只能用于嵌套的類,表示對繼承父類同名類型的隱藏。
三、訪問修飾符
1、類訪問修飾符
(1)非嵌套的類
命名空間或編譯單元內的類只有public和internal兩種修飾,默認是internal?。
(2)嵌套的類
嵌套類型無論是類還是結構,嵌套類型的訪問修飾符為public、internal、protected、private和protected?internal
嵌套類型的默認訪問修飾符為private
2、接口訪問修飾符
接口訪問修飾符包括public、internal、protected、private和protected?internal等,默認為public,可以省略。
3、成員訪問修飾符
public 可以被任意訪問;
protected 只可以被本類和其繼承子類訪問;
internal 只可以被本組合體(Assembly,也叫程序集)內所有的類訪問,組合體是C#語言中類被組合后的邏輯單位和物理單位,其編譯后的文件擴展名往往是“.DLL”或“.EXE”。
protected internal 唯一的一種組合限制修飾符,它只可以被本程序集和其他程序集的繼承子類所訪問。
private 只可以被本類所訪問。
在類內部默認的修飾符為private。
?
總結
以上是生活随笔為你收集整理的C#的类修饰符和成员修饰符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1万块钱的联想笔记本电脑配置是怎样的?
- 下一篇: 联想家悦er512的配置?