让我们看一下下面的类结构:

abstract class Base {

    public abstract void DoSth();
}

class Derived1 : Base {

    public override void DoSth() {

    }
}


这些是某些层次结构的基类。现在,假设我们要提供另一个源自Derived1的类(我们称它为Derived2),该类不应使用DoSth提供的Default1的默认实现。例如,Derived1覆盖了98%的案例,但在其余2%的案例中,此解决方案是不可接受的或危险的。

最好的解决方案是通知从Derived2派生的某人,他应该在编译期间实现DoSth。怎么做?

最佳答案

C#允许“重新抽象”该方法。一个人可以这样写:

abstract class Derived2 : Derived1 {

    public abstract override void DoSth();
}


从现在开始,DoSth再次成为抽象,如果编译器不提供自己的Derived2实现,编译器将拒绝编译从DoSth派生的类。

10-08 04:19