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());
            }
        }
    }


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

  • 相关阅读:
    Git Merge Request
    Hazelcast Hazelcast介绍与使用
    Git 修改name/author信息
    HDU 2553 N皇后问题(DFS)
    HDU 1070 Milk(水题)
    HDU 2616 Kill the monster(简单DFS)
    HDU 1426 Sudoku Killer(BFS)
    HDU 2216 Game III(BFS)
    URAL 1001 Reverse Root(水题)
    URAL 1902 NeoVenice(水题)
  • 原文地址:https://www.cnblogs.com/secying/p/2991614.html
Copyright © 2011-2022 走看看