protected成员访问规则

前几天我一个朋友问我,在子类中为什么不能访问父类的protected方法?

她在某本书上看到的代码大概是如下所示:

 

    public class A

    {

        public string Name = "";

        protected int Age = 0;

    }

    public class AB : A

    {

        public void Init()

        {

            A a = new A();

            a.Name = "lifengguo";

            a.Age = 24;

        }

}

 

但是她编译时总是不能通过,她问我为什么?是我的理解是:

 

Protected是受保护成员,它在它的类中可访问并且可由派生类访问。

上面的一句包含了三层意思:

1、 类的本身可以访问;

2、 派生类中可以访问;

3、 类的实例是不能够访问Protected成员的。

 

下面代码是在类的本身使用了Protected成员

    public class A

    {

        public string Name = "";

        protected int Age = 0;

        public A()

        {

            Name = "lifengguo";

            Age = 24;

        }

}

 

下面的代码是在派生类中使用了Protected成员

    public class AB : A

    {

        public AB()

        {

            base.Name = "黎锋果";

            base.Age = 24;

        }

    }

 

下面的代码是类的实例访问类的成员:

    public class C

    {

        public void Init()

        {

            A a = new A();

            AB ab = new AB();

            a.Name = "lifengguo";   //OK

            ab.Name = "黎锋果";     //OK

            a.Age = 24;             //Error

            ab.Age = 24;            //Error

        }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值