我应该使该方法虚拟还是抽象?

问题描述 投票:2回答:2

我有一个抽象类,它进行自己的内部验证。它具有允许子类进行其他验证检查的另一种方法。目前,我已经创建了方法abstract

protected abstract bool ValidateFurther();

但是,我看到相当多的子类被迫重写它,只是为了返回true。我正在考虑使方法virtual

protected virtual bool ValidateFurther() => true;

假设在抽象类中进行验证会很好吗?我担心子类可能不会注意到它,并且即使在需要时最终也不会覆盖它。这里哪种方法更合适?

c# .net class-design
2个回答
0
投票

您可以在设计中添加另一层。

public abstract class Base
{
    protected abstract bool ValidateFurther();
}

public abstract class BaseWithValidation : Base
{
    protected override bool ValidateFurther() => true;
}

如果继承类的重要子集只返回true,则可以使用BaseWithValidation避免在各处重复代码;对于其他任何内容,请使用Base


0
投票
  • abstract方法意味着您只想定义要遵循的行为,并让子类执行实现。
  • [virtual方法意味着您定义了具有初始实现的方法,但可以重写。

所以也许您可以进一步解释您的情况,然后我们可以进行讨论!

© www.soinside.com 2019 - 2024. All rights reserved.