如何防止子类
重写基类方法答案 0 :(得分:10)
您不需要做任何特殊操作:默认情况下,方法是不可覆盖的。相反,如果您希望该方法可以覆盖,则必须在其声明中添加virtual
关键字。
但请注意,即使某个方法不可覆盖,派生类也可以隐藏它。更多信息请访问:C# keyword usage virtual+override vs. new
答案 1 :(得分:7)
如果在基类(ClassA)中有一个虚方法,它在一个继承的类(ClassB)中被覆盖,并且你想要防止一个继承自ClassB的类重写此方法,那么,你必须标记这个方法在ClassB中被“密封”。
public class ClassA
{
public virtual void Somemethod() {}
}
public class ClassB : ClassA
{
public sealed override void Somemethod() {}
}
public class ClassC : ClassB
{
// cannot override Somemethod here.
}
答案 2 :(得分:-1)
您也可以将ABSTRACT用于父类。因此,您无法通过子类覆盖
abstract main{
}
class sub extent main{
}