C#訪問修飾符總結

 

C#共有五種訪問修飾符:public、private、protected、internal、protected internal。

訪問修飾符 說明
public 公有訪問。不受任何限制。
private 私有訪問。只限於本類成員訪問,子類,實例都不能訪問。
protected 保護訪問。只限於本類和子類訪問,實例不能訪問。
internal 內部訪問。只限於本項目內訪問,其他不能訪問。
protected internal 內部保護訪問。只限於本項目或是子類訪問,其他不能訪問

 

  下面我就結合實例,講一下public、private、protected、internal和protected internal的作用範圍。

  如下代碼:

  1: using System;

  2: using System.Collections.Generic;

  3: using System.Text;

  4:  

  5: namespace AccessModifier

  6: {

  7:   public class AccessModifierClass

  8:   {

  9:     public string GetPublicString()

 10:     {

 11:       return "Public String";

 12:     }

 13:  

 14:     protected string GetProtectedString()

 15:     {

 16:       return "Protected String";

 17:     }

 18:  

 19:     private string GetPrivateString()

 20:     {

 21:       return "Private String";

 22:     }

 23:  

 24:     internal string GetInternalString()

 25:     {

 26:       return "Internal String";

 27:     }

 28:  

 29:     protected internal string GetProtectedInternalString()

 30:     {

 31:       return "Protected Internal String";

 32:     }

 33:  

 34:     void AvailableAccessModifier()

 35:     {

 36:       this.GetPublicString();

 37:       this.GetPrivateString();

 38:       this.GetInternalString();

 39:       this.GetProtectedInternalString();

 40:       this.GetProtectedString();

 41:     }

 42:   }

 43:  

 44:   public class TestAccessModifierClass1

 45:   {

 46:     void AvailableAccessModifier()

 47:     {

 48:       AccessModifierClass item = new AccessModifierClass();

 49:       item.GetPublicString();

 50:       item.GetInternalString();

 51:       item.GetProtectedInternalString();

 52:     }

 53:   }

 54:  

 55:   public class TestAccessModifierClass2 : AccessModifierClass

 56:   {

 57:     void AvailableAccessModifier()

 58:     {

 59:       AccessModifierClass item = new AccessModifierClass();

 60:       item.GetPublicString();

 61:       item.GetInternalString();

 62:       item.GetProtectedInternalString();

 63:       base.GetProtectedString();

 64:     }

 65:   }

 66: }

 

  AccessModifierClass是我們的訪問修飾符類,裏面有五種訪問修飾符

  在TestAccessModifierClass1類中的AvailableAccessModifier()方法只能訪問public、Internal和Protected Internal方法。

  TestAccessModifierClass2類繼承自AccessModifierClass類,所以它的AvailableAccessModifier()方法可以訪問public,internal,protected和protected internal方法。

  在新建一個工程,且引用AccessModifierClass類的dll,代碼如下:

  1: using System;

  2: using System.Collections.Generic;

  3: using System.Text;

  4: using AccessModifier;

  5:  

  6: namespace AccessModifierApp

  7: {

  8:   public class AccessModifierAppClass1 

  9:   {

 10:     void AvailableAccessModifier()

 11:     {

 12:       AccessModifierClass item = new AccessModifierClass();

 13:       item.GetPublicString();

 14:     }

 15:   }

 16:  

 17:   public class AccessModifierAppClass2 : AccessModifierClass

 18:   {

 19:     void AvailableAccessModifier()

 20:     {

 21:       AccessModifierClass item = new AccessModifierClass();

 22:       item.GetPublicString();

 23:       base.GetProtectedString();

 24:       base.GetProtectedInternalString();

 25:     }

 26:   }

 27: }

 

  AccessModifierAppClass1類的AvailableAccessModifier()方法只能訪問public方法。

  AccessModifierAppClass2類繼承自AccessModifierClass類,所它的AvailableAccessModifier()方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章