如何在仍然可以覆盖它的情况下使用默认方法?

时间:2014-09-02 10:11:42

标签: c#

这是一个C#项目。

我有几个从基类继承的类。大多数子类具有相同的行为,而其中一些表现不同。

我正在使用new关键字。

public class Parent
{
    public DataTable FetchScore()
    {
        // blahblah
    }
}

public class ChildNormal : Parent
{
}

public class ChildOdd : Parent
{
    public new DataTable FetchScore()
    {
        DataTable dt = base.FetchScore();
        // blahblah
    }
}

但构建说使用new并不是一个好习惯。

我也不能使用virtualoverride,因为我想要一个默认值。我不想多次复制相同的覆盖实现。

如何在C#中执行此操作?

1 个答案:

答案 0 :(得分:1)

你需要声明基础virtual(这意味着可以在必要时覆盖它)和override它需要与原始行为不同的行为。未重写的派生类的行为与基类类似。

public class Parent()
{
    public virtual DataTable FetchScore()
    {
        // blahblah
    }
}

public class ChildNormal() : Parent
{
}

public class ChildOdd() : Parent
{
    public override DataTable FetchScore()
    {
        DataTable dt = base.FetchScore();
        // blahblah
    }
}