zoukankan      html  css  js  c++  java
  • c#访问修饰符

    声明的可访问性

    含义

    public

    访问不受限制。

    protected

    访问仅限于包含类或从包含类派生的类型。

    internal

    访问仅限于当前程序集。

    protected internal

    访问仅限于从包含类派生的当前程序集或类型。

    private

    访问仅限于包含类型。

     以下是例子程序,根据例子实验可以笔记深入的了解访问修饰符的含义:

    同一程序集(同一个工程下):

     public class BaseCls
        {
            private int private_a = 0;
            protected int protected_b = 1;
            internal int internal_c = 2;
            protected internal int pi_d = 3;
            public int public_e = 4;
            private int get_private()
            {
                return 5;
            }
            protected int get_protected()
            {
                return 6;
            }
            internal int get_internal()
            {
                return 7;
            }
            protected internal int get_pi()
            {
                return 8;
            }
            public int get_public()
            {
                return 9;
            }       
        }
        public class inheritCls : BaseCls
        {
            public inheritCls()
            {
                Console.WriteLine("同一程序集中继承类访问权限测试");
                Console.WriteLine("private,intenal字段不被继承,protected,protected intenal,public被继承");
                Console.WriteLine(this.protected_b);
                Console.WriteLine(this.pi_d);
                Console.WriteLine(this.public_e);
                Console.WriteLine("private方法不被继承,protected,internal,protected intenal,public被继承");
                Console.WriteLine(this.get_protected());
                Console.WriteLine(this.get_internal());
                Console.WriteLine(this.get_pi());
                Console.WriteLine(this.get_public());
            }
        }
        public class Test
        {
            public Test()
            {
                Console.WriteLine("同一程序集中类的访问权限测试");
                BaseCls baseCls = new BaseCls();
                Console.WriteLine(baseCls.pi_d);
                Console.WriteLine(baseCls.public_e);
                Console.WriteLine(baseCls.get_internal());
                Console.WriteLine(baseCls.get_pi());
                Console.WriteLine(baseCls.get_public());
                inheritCls cls = new inheritCls();
                Console.WriteLine(cls.pi_d);
                Console.WriteLine(cls.public_e);
                Console.WriteLine(cls.get_internal());
                Console.WriteLine(cls.get_pi());
                Console.WriteLine(cls.get_public());
            }
        }


    再新建一个工程:

    class ClassTT : BaseCls
        {
            public ClassTT()
            {
                Console.WriteLine("不同一程序集中继承类访问权限测试");
                Console.WriteLine("private,intenal字段不被继承,protected,protected intenal,public被继承");
                Console.WriteLine(this.protected_b);
                Console.WriteLine(this.pi_d);
                Console.WriteLine(this.public_e);
                Console.WriteLine("private,intenal方法不被继承,protected,internal,protected intenal,public被继承");
                Console.WriteLine(this.get_protected());
                Console.WriteLine(this.get_pi());
                Console.WriteLine(this.get_public());
            }
        }
    
        public class TestTT
        {
            public TestTT()
            {
                Console.WriteLine("不同程序集中类的访问权限测试");
                BaseCls baseCls = new BaseCls();
                //Console.WriteLine(baseCls.pi_d);
                Console.WriteLine(baseCls.public_e);
                //Console.WriteLine(baseCls.get_internal());
                //Console.WriteLine(baseCls.get_pi());
                //Console.WriteLine(baseCls.get_public());
                inheritCls cls = new inheritCls();
                //Console.WriteLine(cls.pi_d);
                Console.WriteLine(cls.public_e);
                //Console.WriteLine(cls.get_internal());
                //Console.WriteLine(cls.get_pi());
                //Console.WriteLine(cls.get_public());
                ClassTT clsTT = new ClassTT();
                Console.WriteLine(clsTT.public_e);
                Console.WriteLine(clsTT.get_public());
            }
        }
    }


    以上的例子主要说明同一程序集和不同程序集之间的继承和调用时的访问权限。总的来说多动手来理解。

  • 相关阅读:
    排序算法说明
    easyExcel 读写excel表格
    POI 读写excel表格
    JVM虚拟机详解
    SSM相关的配置文件模板
    SSM 统一异常处理
    ssm框架实现发送邮件
    springboot发送邮件
    SpringBoot Ajax请求Json数据
    协程(Coroutine)(二)
  • 原文地址:https://www.cnblogs.com/secying/p/2991614.html
Copyright © 2011-2022 走看看