访问权限为protected的类成员可被访问的范围是什么?

发布网友 发布时间:2022-04-23 03:18

我来回答

5个回答

热心网友 时间:2023-11-01 16:59

protected是访问控制的一种 。在类中被protected修饰的函数或数据成员,只能被该类或其子类的以及其友元函数访问。

特别要注意的是:访问权限为protected的类成员不能被该类的实例对象或其子类的实例对象访问。以下的C#代码演示了这一点

// 父类
public class Father
{
    
   protected int x; 
   public Father()
   {
       // 正确!
       x = 10;
   }
   public void ShowX()
   {
       // 正确!
       Console.Write( "x = {0}", x);
   }
}
// 子类
public class Son : Father
{
   public Son() : base()
   {
      // 正确! 
      x = 100;
   }
   
   public void ShowXSon()
   {
       // 正确!
       Console.Write( "x = {0}", x);
   }
}
class Program
{
    static void Main(string[] args)
    {
        Father f = new Father();
        // f.x = 30; <--错误!!!
        f.ShowX();
        Son s = new Son();
        // s.x = 20; <--错误!!!
        s.ShowXSon();
    }
}

热心网友 时间:2023-11-01 16:59

除 被本类或者派生类(子类)的成员函数访问外 还有本包内所有类访问

热心网友 时间:2023-11-01 16:59

本类及其派生类中。也就是说他是祖传的。继承了他就可以访问。

热心网友 时间:2023-11-01 17:00

成员只能被本类或者派生类(子类)的成员函数访问

热心网友 时间:2023-11-01 17:01

public: 对任何类和成员都公开, 无*访问(公开的);
protected: 仅仅对该类以及该类的派生类公开(即当前类及子类);
private: 仅仅对该类公开(即当前类私有化);
internal: 只能值包含该类的程序集中访问该类(只是单独的项目,而不是整个解决方案);
protected internal: 只能在本类,派生类或者包含该类的程序集中访问(当前类,子类的程序集).

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com