考虑以下 -
void Main()
{
var c = new C();
c.Print();
}
public abstract class A
{
public virtual void Print()
{
Console.WriteLine("I'm in A!");
}
}
public abstract class B : A
{
public abstract override void Print();
}
public class C : B
{
public override void Print()
{
Console.WriteLine("I'm in C!");
base.Print();
}
}
当然,这不会编译,因为它认为我正在尝试调用 B 的 print 方法,这是抽象的。我想做的是调用 C 的 print 方法,然后让它调用 base 的 print 方法,这将“链接”回 A 的 print 方法。我希望输出是 -
I'm in C!
I'm in A!
这样做甚至可能吗?我究竟做错了什么?
编辑:我想补充一点,关于上面代码的要点是我试图强迫任何扩展 B 的人实现他们自己的 Print 方法。