zoukankan      html  css  js  c++  java
  • C#中五种访问修饰符作用范围 public、private、protected、internal、protected internal

    1.五种访问修饰符包括哪些?

    public、private、protected、internal、protected internal


    2.五种访问修饰符的作用范围?

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

    测试private作用范围:

    本类中:

    image

    图1

    结论:在BaseClass类中,在方法Test()中,可以调用私有方法GetaPrivateString()

    子类中:

    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()方法。

  • 相关阅读:
    Android——ListView学习笔记(一)
    记录笔记——关于request.getRequestDispatcher().forward(request, response)的跳转问题
    Python + openCV 实现图像垂直投影和水平投影
    2020年-第三周助教总结-第二组
    Python记录——字符串的常用方法
    2020年-第二周助教总结-第二组
    Android开发——三种活动跳转方式
    2020年-第一周助教总结-第二组
    Python —— 实例化ndarray对象
    海信聚好看矫恒浩:构建异地双活混合云,利用公共云应对流量突增
  • 原文地址:https://www.cnblogs.com/yangxi1081/p/9437716.html
Copyright © 2011-2022 走看看