如何在仍然能够覆盖默认方法的情况下拥有该方法
本文关键字:方法 默认 情况下 拥有 覆盖 | 更新日期: 2023-09-27 18:20:23
这是一个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
不是一个好的做法。
我也不能使用virtual
和override
,因为我想要一个默认值。我不想多次复制相同的覆盖实现。
我如何在C#中做到这一点?
您需要在需要与原始行为不同的行为时声明基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
}
}