1.五種訪問修飾符包括哪些?ide
public、private、protected、internal、protected internal測試
2.五種訪問修飾符的做用範圍?spa
public :公有訪問。不受任何限制。
private : 私有訪問。只限於本類成員訪問,子類,實例都不能訪問。
protected :保護訪問。只限於本類和子類訪問,實例不能訪問。
internal :內部訪問。只限於本項目內訪問,其餘不能訪問。
protected internal : 內部保護訪問。只限於本項目或是子類訪問,其餘不能訪問3d
實例講解一下這五種訪問修飾符的做用範圍:code
基礎代碼:對象
1 class BaseClass 2 { 3 public string GetaPublicString() 4 { 5 return "Public String"; 6 } 7 8 protected string GetaProtectedString() 9 { 10 return "Protected String"; 11 } 12 13 private string GetaPrivateString() 14 { 15 return "Private String"; 16 } 17 18 internal string GetaInternalString() 19 { 20 return "Internal String"; 21 } 22 23 protected internal string GetaProtectedInternalString() 24 { 25 return "Protected Internal String"; 26 } 27 public void Test() 28 { 29 30 } 31 32 }
測試private做用範圍:blog
本類中:繼承
圖1get
結論:在BaseClass類中,在方法Test()中,能夠調用私有方法GetaPrivateString()string
子類中:
圖2
結論:在AClass中,只繼承了父類,在方法Test2()中,調用父類的方法,沒有GetaPrivateString(),說明子類無法調用私有方法。
實例中:
圖3
結論:在Main方法中new了一個BaseClass實例,對象調用沒有GetaPrivateString(),說明實例無法調用私有方法。
----------------------------------------------------------------------------------------------------------------------------------
測試protected做用範圍:
本類中:
看圖1
結論:在BaseClass類中,在方法Test()中,能夠調用方法GetaProtectedString()
子類中(一):
看圖2
結論:在AClass中,只繼承了父類,在方法Test2()中,調用父類的方法,有GetaProtectedString(),說明子類能夠調用GetaProtectedString()方法。
子類中(二):
新建一個項目,並引用以前的項目,建立子類BClass並繼承父類:
圖4
結論:子類和父類不在同一個程序集內,可是子類能夠調用GetaProtectedString(),說明雖然不在一個程序集內,可是依然能夠調用GetaProtectedString()方法
實例中:
看圖3
結論:在Main方法中new了一個BaseClass實例,對象調用沒有GetaProtectedString(),說明實例無法調用GetaProtectedString()方法。
-------------------------------------------------------------------------------------------------------------------------------------
測試Internal做用範圍:
經過以上圖1,圖2,圖3,能夠看出來在本類中,子類中,實例中均可以調用GetaInternalString()方法。
經過圖4,能夠看出來,不在同一個程序集內,不能夠調用GetaInternalString()方法。
新建一個項目,並引用以前的項目:
圖5
結論:在新實例的方法中,new了一個BaseClass實例,對象調用沒有GetaInternalString(),說明實例無法調用GetaInternalString()方法。
------------------------------------------------------------------------------------------------------------------------------------
測試protected Internal做用範圍:
經過以上圖1,圖2,圖3,能夠看出來在本類中,子類中,實例中均可以調用GetaProtectedInternalString()方法。
經過圖4,能夠看出來,不在同一個程序集內,能夠調用GetaProtectedInternalString()方法。
經過圖5,能夠看出來,不在同一個程序集內,new了一個BaseClass實例,對象調用沒有GetaProtectedInternalString(),說明實例無法調用GetaProtectedInternalString()方法。
-----------------------------------------------------------------------------------------------------------------------------------
測試public做用範圍:
經過以上圖例,全部狀況均可以調用GetaPublicString()方法。