1.在namespace中的類、介面預設是internal型別的,也可以顯示的定義為public型別,不允許是其他訪問型別。
2.在乙個類裡面,屬性和方法預設是private的,可以顯示的定義為public、private、protected、internal或protected internal等訪問型別。
3.介面中不能定義成員變數,介面中的方法預設為public的訪問許可權,但是不能顯示的定義任何訪問型別。
4.抽象類中必須有乙個以上的抽象方法,抽象方法可以是public、internal、protected,不能是private的訪問型別。
類中所有的成員,預設均為private。
c#用多種修飾符來表達類的不同性質。根據其保護級c#的類有五種不同的限制修飾符:
public可以被任意訪問;
protected只可以被本類和其繼承子類訪問;
internal只可以被本組合體(assembly)內所有的類訪問,組合體是c#語言中類被組合後的邏輯單位和物理單位,其編譯後的副檔名往往是「.dll」或「.exe」。
protected internal 唯一的一種組合限制修飾符,它只可以被本組合體內所有的類和這些類的繼承子類所訪問。
private只可以被本類所訪問。
如果不是巢狀的類,命名空間或編譯單元內的類只有public和internal兩種修飾。
new修飾符只能用於巢狀的類,表示對繼承父類同名型別的隱藏。
override 只能用於巢狀的類,表示對繼承父類同名型別的覆蓋。
abstract用來修飾抽象類,表示該類只能作為父類被用於繼承,而不能進行物件例項化。
抽象類可以包含抽象的成員,但這並非必須。
abstract不能和new同時用。
下面是抽象類用法的偽碼:
abstract class a
abstract class b: a }
class c: b }
抽象類a內含乙個抽象方法f(),它不能被例項化。類b繼承自類a,其內包含了乙個例項方法g(),但並沒有實現抽象方法f(),所以仍然必須宣告為抽象類。
類c繼承自類b,實現類抽象方法f(),於是可以進行物件例項化。
sealed用來修飾類為密封類,阻止該類被繼承。同時對乙個類作abstract和sealed的修飾是沒有意義的,也是被禁止的。
C 預設訪問許可權
c 的預設訪問許可權老是搞混,特此記下。宣告類 方法 字段 屬性時不加訪問許可權修飾符時的訪問許可權是什麼呢?1.宣告命名空間 類,前面不加限制訪問修飾符時,預設訪問許可權為internal 訪問僅限於當前程式集。大龍注 從通俗的角度來說,乙個專案也就是乙個程式集。2.宣告類成員 域 屬性 方法 預...
C 預設訪問許可權
c 的預設訪問許可權老是搞混,特此記下。宣告類 方法 字段 屬性時不加訪問許可權修飾符時的訪問許可權是什麼呢?1.宣告命名空間 類,前面不加限制訪問修飾符時,預設訪問許可權為internal 訪問僅限於當前程式集。2.宣告類成員 域 屬性 方法 預設為private 以及結構型別,前面不加限制訪問修...
C 的預設訪問許可權
1.在namespace中的類 介面預設是internal型別的,也可以顯示的定義為public型別,不允許是其他訪問型別。2.在乙個類裡面,屬性和方法預設是private的,可以顯示的定義為public private protected internal或protected internal等訪...