在C#中,protected
是一个访问修饰符,它用于限制类成员(如字段、属性、方法等)的可见性和访问权限
-
当成员被标记为
protected
时,只有以下实体可以访问该成员:- 类中定义该成员的类的实例。
- 从定义该成员的类派生的子类的实例。
- 在定义该成员的类中声明为
protected internal
的成员还可以被同一程序集中的其他类访问。
-
protected
修饰符主要用于实现继承和多态。通过将成员设置为protected
,基类可以提供一些功能和数据,供派生类使用或扩展,而不必暴露给其他无关的类。 -
与
private
修饰符相比,protected
提供了更宽松的访问控制。private
成员只能在定义它们的类中访问,而protected
成员可以在派生类中访问。这使得派生类可以根据需要重写或修改基类的行为。
下面是一个简单的示例,说明protected
修饰符的用法:
public class BaseClass
{
protected int _value;
public BaseClass(int value)
{
_value = https://www.yisu.com/ask/value;"hljs">protected virtual void PrintValue()
{
Console.WriteLine("BaseClass: Value is " + _value);
}
}
public class DerivedClass : BaseClass
{
public DerivedClass(int value) : base(value)
{
}
public override void PrintValue()
{
Console.WriteLine("DerivedClass: Value is " + _value);
}
}
class Program
{
static void Main(string[] args)
{
DerivedClass obj = new DerivedClass(10);
obj.PrintValue(); // 输出 "DerivedClass: Value is 10"
}
}
在此示例中,BaseClass
具有一个protected
字段_value
和一个protected virtual
方法PrintValue()
。DerivedClass
继承自BaseClass
,并重写了PrintValue()
方法。由于_value
和PrintValue()
在基类中被声明为protected
,因此派生类可以访问和使用它们。