下面的代码说a()不能覆盖a(),因为wee.a()没有标记为virtual,abstract或override。这有什么方法吗?我需要在super方法中包含代码,但仍想覆盖它!
public abstract class wee
{
public void a()
{
}
}
public class dee : wee
{
public override void a()
{
}
public void b()
{
}
}
答案 0 :(得分:9)
您需要标记wee.a virtual or abstract。
虚拟:
public abstract class wee
{
public virtual void a()
{
}
}
public class dee : wee
{
public override void a()
{
}
public void b()
{
}
}
摘要:
public abstract class wee
{
public abstract void a();
}
public class dee : wee
{
public override void a()
{
}
public void b()
{
}
}
答案 1 :(得分:2)
它不会覆盖方法,没有标记基础就无法做到这一点。如果您不想像其他人建议的那样修改基础,则可以隐藏基本方法,如下所示:
public class dee : wee
{
public new void a()
{
}
public void b()
{
}
}
答案 2 :(得分:1)
将wee.a()
标记为virtual - 它允许您提供基本实现,但如果需要,可以选择在子类中覆盖该行为。
// wee
public virtual void a() { // do stuff for base implementation }
// dee
public override void a() { // override behavior implemenation }