简述:
public :公有访问。不受任何限制,任何地方都可以引用,特殊场景不安全
private :私有访问。只限于本类成员访问,子类,实例都不能访问,可以用在本类种独有的方法。
protected :保护访问。只限于本类和子类访问,实例不能访问。
internal :内部访问。只限于本项目内访问,其他项目不能访问。
protected internal 组合:内部保护访问。只限于本项目或是子类访问,其他项目不能访问。
扩展
实例讲解一下这五种访问修饰符的作用范围:
基础代码:
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作用范围:
本类中:
图1
结论:在BaseClass类中,在方法Test()中,可以调用私有方法GetaPrivateString()
子类中:
图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()方法。
出处:https://www.cnblogs.com/yangxi1081/p/9437716.html
版权申明:本文来源于网友收集或网友提供,仅供学习交流之用,如果有侵权,请转告版主或者留言,本公众号立即删除。
支持小微:
腾讯云 搞活动了?玩服务器的可以搞搞。就这几天时间。
轻量 1C2G6M 60GB SSD盘297元/3年
链接:https://curl.qcloud.com/bR8ycXZa
右下角,您点一下在看图片
小微工资涨1毛
商务合作QQ:185601686