C#中五种访问修饰符做用范围 public、private、protected、internal、protected internal

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     }
View Code

测试private做用范围:blog

本类中:继承

image

图1get

结论:在BaseClass类中,在方法Test()中,能够调用私有方法GetaPrivateString()string

子类中:

image

图2

结论:在AClass中,只继承了父类,在方法Test2()中,调用父类的方法,没有GetaPrivateString(),说明子类无法调用私有方法

实例中:

image

图3

结论:在Main方法中new了一个BaseClass实例,对象调用没有GetaPrivateString(),说明实例无法调用私有方法

----------------------------------------------------------------------------------------------------------------------------------

测试protected做用范围:

本类中:

看图1

结论:在BaseClass类中,在方法Test()中,能够调用方法GetaProtectedString()

子类中(一):

看图2

结论:在AClass中,只继承了父类,在方法Test2()中,调用父类的方法,有GetaProtectedString(),说明子类能够调用GetaProtectedString()方法

子类中(二):

新建一个项目,并引用以前的项目,建立子类BClass并继承父类:

image

图4

结论:子类和父类不在同一个程序集内,可是子类能够调用GetaProtectedString(),说明虽然不在一个程序集内,可是依然能够调用GetaProtectedString()方法


实例中:

看图3

结论:在Main方法中new了一个BaseClass实例,对象调用没有GetaProtectedString(),说明实例无法调用GetaProtectedString()方法

-------------------------------------------------------------------------------------------------------------------------------------

测试Internal做用范围:

经过以上图1,图2,图3,能够看出来在本类中,子类中,实例中均可以调用GetaInternalString()方法。

经过图4,能够看出来,不在同一个程序集内,不能够调用GetaInternalString()方法。

新建一个项目,并引用以前的项目:

image

图5

结论:在新实例的方法中,new了一个BaseClass实例,对象调用没有GetaInternalString(),说明实例无法调用GetaInternalString()方法

------------------------------------------------------------------------------------------------------------------------------------

测试protected  Internal做用范围:

经过以上图1,图2,图3,能够看出来在本类中,子类中,实例中均可以调用GetaProtectedInternalString()方法。

经过图4,能够看出来,不在同一个程序集内,能够调用GetaProtectedInternalString()方法。

经过图5,能够看出来,不在同一个程序集内,new了一个BaseClass实例,对象调用没有GetaProtectedInternalString(),说明实例无法调用GetaProtectedInternalString()方法

-----------------------------------------------------------------------------------------------------------------------------------

测试public做用范围:

经过以上图例,全部状况均可以调用GetaPublicString()方法。

相关文章
相关标签/搜索