C# protected修饰词

概述:

假设A为基类,B为子类,被protected修饰的成员在基类中 
1. 在A中可直接访问 
2. 在B中可直接访问; 
3. 在A中通过A或B的实例访问; 
4. 在B中通过B的实例访问,不能通过A的实例访问; 
5. 在A和B外部的类中,无法访问;

 

总结:

基类中访问无限制;子类中直接访问或通过子类实例访问,多级派生类中仍可以访问父类的protected成员

代码示例:

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();//不能访问
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值