为了账号安全,请及时绑定邮箱和手机立即绑定

关于访问修饰符的一点疑问

关于访问修饰符的一点疑问

牧羊人nacy 2018-11-20 05:02:23
public  class Class1    {        protected int bb;        public int cc;    }    public class class2:Class1    {        public void foo()       {            //可得到base.bb,base.cc            Class1 c=new Class1();            //只能得到c.cc,不能访问受保护成员?         }    } 为什么在派生类中,只能通过base才能访问到基类的protected成员,直接创建基类对象就访问不到了?
查看完整描述

2 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

1. protected 访问控制符能被用于方法和成员变量。 
2. 声明为protected的方法和成员变量能被同一个包里的所有类所访问,就像默认修饰符package一样。 
3. 能被该类的子类所访问,子类可以和父类不在一个包中。 
这样,当你想让一个类中的某个方法或成员变量在包中都可见,而且其子类也能访问(子类有可能和父类不在同一个包中)但又不想让所有类都可以访问该类时,就可以用protected修饰符。 
可访问性: 
public > protected > package >private

查看完整回答
反对 回复 2018-11-21
?
12345678_0001

TA贡献1802条经验 获得超5个赞

标识为Protected的类A中的成员,类A和从类A派生的类的方法可以访问

如果是类A的对象和从类A派生的对象是不能访问的

参考:Programming C#


查看完整回答
反对 回复 2018-11-21
  • 2 回答
  • 0 关注
  • 438 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信