17、5種訪問修飾符

1. 簡述:

所有類型和類型成員都具有可訪問性級別,用來控制是否可以在您程序集的其他代碼中或其他程序集中使用它們。 可使用訪問修飾符指定聲明類型或成員的可訪問性。

2. 5種訪問修飾符

訪問修飾符 說明
public 同一程序集中的任何其他代碼或引用該程序集的其他程序集都可以訪問該類型或成員。
private 只有同一類或結(jié)構(gòu)中的代碼可以訪問該類型或成員。
protected 只有同一類或結(jié)構(gòu)或者此類的派生類中的代碼才可以訪問的類型或成員。
internal 同一程序集中的任何代碼都可以訪問該類型或成員,但其他程序集中的代碼不可以。
protected internal 由其聲明的程序集或另一個程序集派生的類中任何代碼都可訪問的類型或成員。 從另一個程序集進(jìn)行訪問必須在類聲明中發(fā)生,該類聲明派生自其中聲明受保護(hù)的內(nèi)部元素的類,并且必須通過派生的類類型的實例發(fā)生。

3. 舉個栗子

public class Bicycle 
{
      public void Pedal() 
      {
      } 
}

4 . 類和結(jié)構(gòu)的可訪問性

直接在命名空間中聲明的類和結(jié)構(gòu)(即,沒有嵌套在其他類或結(jié)構(gòu)中的類和結(jié)構(gòu))可以是公共類和結(jié)構(gòu),也可以是內(nèi)部類和結(jié)構(gòu)。 如果不指定訪問修飾符,則默認(rèn)為 internal。
結(jié)構(gòu)成員,包括嵌套的類和結(jié)構(gòu),可以聲明為公共的、 內(nèi)部的,或私人的。 類成員(包括嵌套的類和結(jié)構(gòu))可以為公共的、受保護(hù)的內(nèi)部、受保護(hù)的、內(nèi)部的或私有的。 類成員和結(jié)構(gòu)成員的訪問級別,包括嵌套類和結(jié)構(gòu),默認(rèn)為私有。 不可以從包含類型之外訪問私有嵌套類型。
派生類的可訪問性不能高于其基類型。 換句話說,不能有從內(nèi)部類 A派生的公共類 B。 如果允許這種情況,將會使 A成為公共類,因為 A的所有受保護(hù)的成員或內(nèi)部成員都可以從派生類訪問。

5. 類成員和結(jié)構(gòu)成員的可訪問性

可以使用五種訪問類型中的任何一種來聲明類成員(包括嵌套的類和結(jié)構(gòu))。 結(jié)構(gòu)成員無法聲明為受保護(hù)成員,因為結(jié)構(gòu)不支持繼承。
通常,成員的可訪問性低于包含成員的類型的可訪問性。 如果由成員實現(xiàn)接口方法或重寫已在公共基類中定義的虛擬方法時,內(nèi)部類的公共成員可以從外部程序集訪問。
任何成員的字段、 屬性或事件的類型必須至少與該成員本身一樣具備可訪問性。 同樣,作為方法、索引器或代表的任一成員的返回類型和參數(shù)類型必須至少有與該成員本身一樣的可訪問性。 例如,如果 C不是公共類,則不能返回類 C的公共方法 M。 同樣,如果 A聲明為私有,則類型 A不能有受保護(hù)的屬性。
析構(gòu)函數(shù)不能具有可訪問性修飾符。
要設(shè)置類成員或結(jié)構(gòu)成員的訪問級別,請向該成員聲明添加適當(dāng)?shù)年P(guān)鍵字,如下面的示例所示。

        public class Tricycle
        {
            // protected method:
            protected void Pedal() { }

            // private field:
            private int wheels = 3;

            // protected internal property:
            protected internal int Wheels
            {
                get { return wheels; }
            }
        }

6. 其他類型

  1. 接口成員始終是公共成員,因為接口的用途是讓其他類型能夠訪問某個類或結(jié)構(gòu)。 訪問修飾符不能應(yīng)用于接口成員。
  2. 枚舉成員始終是公共的,不能應(yīng)用任何訪問修飾符。
  3. 委托行為類似于類和結(jié)構(gòu)。 默認(rèn)情況下,它們在命名空間中直接聲明時具有內(nèi)部訪問權(quán),在嵌套時具有私有訪問權(quán)。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容