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成员,直接创建基类对象就访问不到了?.NET技术C#问题补充: 另外,如果我创建了一个class2的对象,则可以通过该对象访问基类的受保护成员了.为什么创建class1的对象却不能访问class1自己的成员呢? public class class2:Class1 { protected void foo() { //可得到base.bb,base.cc class2 d=new class2(); //可得到d.bb,d.cc Class1 c=new Class1(); //只能得到c.cc,不能访问受保护成员? } } 另外,如果我在class2的外面创建一个class2的对象,这时又不能通过该对象访问基类的受保护成员了???
2 回答
神不在的星期二
TA贡献1963条经验 获得超6个赞
1. protected 访问控制符能被用于方法和成员变量。
2. 声明为protected的方法和成员变量能被同一个包里的所有类所访问,就像默认修饰符package一样。
3. 能被该类的子类所访问,子类可以和父类不在一个包中。
这样,当你想让一个类中的某个方法或成员变量在包中都可见,而且其子类也能访问(子类有可能和父类不在同一个包中)但又不想让所有类都可以访问该类时,就可以用protected修饰符。
可访问性:
public > protected > package >private
蓝山帝景
TA贡献1843条经验 获得超7个赞
标识为Protected的类A中的成员,类A和从类A派生的类的方法可以访问
如果是类A的对象和从类A派生的对象是不能访问的
参考:Programming C#
- 2 回答
- 0 关注
- 523 浏览
添加回答
举报
0/150
提交
取消