以下代码段有效
public class BaseClass
{
public virtual void Display()
{
Console.WriteLine("Virtual method");
}
}
public class DerivedClass : BaseClass
{
public override sealed void Display()
{
Console.WriteLine("Sealed method");
}
}
但是为什么不呢
public class BaseClass
{
public virtual sealed void Display()
{
Console.WriteLine("Virtual method");
}
}
已编辑
实际上,我正在阅读What is sealed class and sealed method?这篇文章。因此,我遵循作者的指示。突然,我尝试在基类中扮演“封印”的概念。这就是为什么我想到了这个问题。
最佳答案
override sealed
是有效的,因为它说“我正在重写基类方法,但是派生类不能重写我”。那讲得通。它的一部分是谈论与其基类的关系。另一个正在谈论与派生类的关系。virtual sealed
会说“您可以覆盖我(virtual
),但是不能覆盖我(sealed
)。”这是没有意义的。这两个修饰语是矛盾的,并且适用于相同的关系。