C# 如何拥有一个默认的方法,同时仍然能够覆盖它?
这是一个C#项目 我从基类继承了几个类。大多数子类都有相同的行为,而有些子类的行为则不同 我正在使用C# 如何拥有一个默认的方法,同时仍然能够覆盖它?,c#,C#,这是一个C#项目 我从基类继承了几个类。大多数子类都有相同的行为,而有些子类的行为则不同 我正在使用new关键字 public class Parent { public DataTable FetchScore() { // blahblah } } public class ChildNormal : Parent { } public class ChildOdd : Parent { public new DataTable Fetch
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#中实现这一点?您需要声明基
虚拟
(这意味着它可以在必要时被重写),并且在需要不同于原始行为的地方重写它。非重写的派生类的行为与基类一样
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
}
}
您可以使用virtual和override,只需将virtual基类方法放在基类中即可。另请参阅为什么使用new
可能不是您想要做的事情。