覆盖抽象方法时,我再次设置抽象是否正确?

时间:2012-07-16 01:21:55

标签: c# class abstract-class abstract

也许标题令人困惑。

让我举个例子:

public abstract class Base
{
    protected abstract void DoSomething();
}

public abstract class BaseA : Base
{
    protected abstract void DoSomething();
}

public class ClassA1 : BaseA
{
    protected override void DoSomething()
    {
        // do something!
    }
}

public class ClassA2 : BaseA
{
    protected override void DoSomething()
    {
        // do something!
    }
}

使用此代码,这是我真实项目中的一个类似场景。我有一个基类。但我意识到基类需要再次抽象,所以方法DoSomething需要再次抽象,我想在具有具体类时覆盖它。

这是一个好习惯吗?或者是否存在问题,因为我已将方法设置为抽象两次?

1 个答案:

答案 0 :(得分:3)

你真的不需要在BaseA上声明方法;它的所有子类都将通过其父类继承它。

当您想要在子类上将具体方法重新定义为抽象时,abstract override is useful