继承
在C#中,当你重写基类中的成员时,访问修饰符的可见性不能比基类中的成员更受限制。这意味着,如果你重写一个public
的成员,你不能将其改为protected
、internal
、private
或protected internal
。但是,你可以使其更公开,例如从protected
变为public
,这是允许的。
public class BaseClass
{
public virtual void MyMethod()
{
//基类方法实现
}
}
public class DerivedClass : BaseClass
{
public override void MyMethod()//与基类保持相同的访问级别
{
//派生类方法实现
}
// 无法将访问级别从public提高到protected
// protected override void MyMethod() // 编译报错
// {
// //派生类方法实现
// }
}
阻止继承
关键字sealed用于阻止其他类继承或扩展当前类。它可以被用于类、方法和属性。
sealed class MyBaseClass
{
}
class MyDerivedClass : MyBaseClass
{
//错误CS0509“MyDerivedClass”: 无法从密封类型“MyBaseClass”派生
}