浅谈C#基础之类的访问修饰符

 更新时间:2013年03月24日 12:36:01   作者:  
浅谈C#基础之类的访问修饰符,需要的朋友可以参考一下

1.类中成员的访问修饰符

方位修饰符就是确定该成员能够访问(使用)的区域。C#中常用的有如下修饰符:pubic(公有)、private(私有)、internal(内联)、protected(受保护)。举例说明各个修饰符的限制区域。   

复制代码 代码如下:

class TestClass
    {
        public int a = 0;
        private int b = 0;
        protected int c = 0;

pulic  static  int d=0;
    }    


TestClass类中变量a是公有类型,可以在类外方位,即类实例化后可以使用a;变量b只能在类内访问,即类内部的函数可以使用b;变量c则是TestClass继承类可以使用。
复制代码 代码如下:

    class B
    {
        private void st()
        {
           TestClass tec = new TestClass();
            int aa = tec.a;   //right
            int bb = tec.b;  //wrong
            int cc = tec.c    //wrong
        }

   TestClass 实例化对象tec,tec可以访问a但不能访问b、c。那么什么情况下可以访问b、c呢?
复制代码 代码如下:

    class C:TestClass
    {
        private void st()
        {
           TestClass tec = new TestClass();
            C bo = new C();
            int aa = tec.a;
            int bb = tec.b;//wrong
            int cc = tec.c;//wrong
            int tt = bo.c;
        }
    }

先说c。c是受保护类型,其继承类C可以访问。是类B实例化对象仍然不可以访问。但是B内部可以访问c。如下面所示,类内访问类内无限制。
复制代码 代码如下:

    class TestClass
    {
        public int a = 0;
        private int b = 0;
        protected int c = 0;

pulic  static  int d=0;
        private void os()
        {
            int a1 = a;
            int a2 = b;
            int a3 = c;
        }
    }


B继承之后,c就变为private。也就说B的继承类无法访问c;如下所示,D中无法访问c。
复制代码 代码如下:

    class D : B
    {
        private void st()
        {
            B bo = new B();
            int dd = bo.c;//wrong访问受限制
        }
    }

static修饰符表明该字段或方法是类所有,不是某个具体对象的。TestClass类不同实例化时a、b、c的值不同,但d是相同的。如果说a、b、c相当于每个人在哪个省,那么d表明大家都在中国。
复制代码 代码如下:

    class B:TestClass
    {
        TestClass tec = new TestClass();
        int bb = tec.a;//wrong 错误原因是因为字段的初始值引用了非静态字段
        int cc = TestClass.d;
        private void st()
        {

            B bo = new B();
            int aa = tec.a;
            int tt = bo.c;
        }
    }

小结:

puclic修饰:类内,类外皆可;private:内部;protect:类内即其派生类。

相关文章

  • C#基础:Equals()与运算符==的区别分析

    C#基础:Equals()与运算符==的区别分析

    本篇文章是对c#中的Equals()与运算符==的区别进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C#的循环语句集锦及案例详解

    C#的循环语句集锦及案例详解

    这篇文章主要介绍了C#中的基本循环:while循环、for循环和foreach循环,大家都知道循环结构可以简化程序编码,更好地实现理想的效果,并结合案例给大家讲解,需要的朋友可以参考下
    2015-07-07
  • C#实现.net页面之间传值传参方法汇总

    C#实现.net页面之间传值传参方法汇总

    这篇文章主要介绍了C#实现.net页面之间传值传参方法,实例汇总了几类常见的传值传参的方法,非常具有实用价值,需要的朋友可以参考下
    2014-10-10
  • C#调用usb摄像头的实现方法

    C#调用usb摄像头的实现方法

    这篇文章主要介绍了C#调用usb摄像头的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • c#读取excel内容内容示例分享

    c#读取excel内容内容示例分享

    这篇文章主要介绍了c#读取excel内容内容示例,要求Excel需是.xls格式,需要的朋友可以参考下
    2014-03-03
  • C#版免费离线人脸识别之虹软ArcSoft V3.0(推荐)

    C#版免费离线人脸识别之虹软ArcSoft V3.0(推荐)

    本文只是简单介绍了如何使用虹软的离线SDK,进行人脸识别的方法,并且是图片的方式,本地离线识别最大的好处就是没有延迟,识别结果立马呈现,对C#离线人脸识别虹软相关知识感兴趣的朋友一起看看吧
    2021-12-12
  • c#循环左移字符示例

    c#循环左移字符示例

    这篇文章主要介绍了c#循环左移字符示例,需要的朋友可以参考下
    2014-04-04
  • C# WPF实现3D操作几何体效果

    C# WPF实现3D操作几何体效果

    众所周知,我的世界就是无数个像素块的集合,而像素块也就是立方体。关于新建立方体,这个大家已经非常熟练了,本文就来说说如何实现3D操作几何体效果吧
    2023-03-03
  • C#中如何使用 XmlReader 读取XML文件

    C#中如何使用 XmlReader 读取XML文件

    本文介绍了C#中使用XmlReader,只读、向前、循环读取XML节点的方法,并为我们列出、XmlReader类的方法、属性、枚举等成员,希望对大家学习有所帮助。
    2016-05-05
  • unity实现玻璃效果

    unity实现玻璃效果

    这篇文章主要为大家详细介绍了unity实现玻璃效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04

最新评论