OOP澄清

时间:2009-10-09 10:17:04

标签: c# .net oop

如何防止子类

重写基类方法

3 个答案:

答案 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{
}