C#的protected访问修饰符

概述
设A为父类,B为继承A的子类
在A中被protected修饰的成员

1、在A中可以访问
2、在B中可以直接访问
3、在B中通过B的实例访问
4、在A和B的外部类无法访问`
总结
基类中访问无限制;子类中直接访问或通过子类实例访问
代码示例

using System;

namespace TestProtected
{
    class Program
    {
        static void Main(string[] args)
        {
            var baseClass = new BaseClass();
            var childClass = new ChildClass();
            Console.WriteLine(baseClass.Member1);
            // Console.WriteLine(baseClass.Member2);//不能访问
            // baseClass.Function2();//不能访问
            Console.WriteLine(childClass.Member1);
            // Console.WriteLine(childClass.Member2);//不能访问
            //childClass.Function2();//不能访问
        }
    }

    public class BaseClass
    {
        public int Member1 = 100;
        protected int Member2 = 200;
        public int Member3;

        public void Function1()
        {
            Member3 = Member2;
            Function2();

            var baseClass = new BaseClass();
            var childClass = new ChildClass();
            Console.WriteLine(baseClass.Member1);
            Console.WriteLine(baseClass.Member2);
            baseClass.Function2();
            Console.WriteLine(childClass.Member1);
            Console.WriteLine(childClass.Member2);
            childClass.Function2();
        }

        protected void Function2()
        {
            Console.WriteLine("Function2");
        }
    }

    public class ChildClass : BaseClass
    {
        public void Test()
        {
            Console.WriteLine(Member1.ToString());
            Console.WriteLine(Member2.ToString());
            Function2();

            var baseClass = new BaseClass();
            var childClass = new ChildClass();
            Console.WriteLine(baseClass.Member1);
            //Console.WriteLine(baseClass.Member2);//不能访问
            //baseClass.Function2();//不能访问
            Console.WriteLine(childClass.Member1);
            Console.WriteLine(childClass.Member2);//不能访问
            childClass.Function2();//不能访问
        }
    }
}
————————————————
版权声明:本文为CSDN博主「Jacob Ni」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/nihang1234/article/details/70245894
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值