c#继承一般然后是特定的
本文关键字:然后 继承 | 更新日期: 2023-09-27 18:14:21
class base_c
{
public virtual void a() {}
public virtual void b() {}
public virtual void c() {}
public virtual void d() {}
}
class other_c : base_c
{
public void a() {}
public new void b() {}
public override void c() {}
public override void d() {base.d();}
}
class Program
{
static void Main()
{
base_c game2 = new other_c();
game2.a();
game2.b();
game2.c();
game2.d();
}
}
'd'具有所需的行为,即更通用的base_c函数和更具体的other_c函数同时出现,尽管如果顺序相反会更好。要查看其效果,请使用调试器并逐步执行程序。
"d"是实现此结果的最佳方法吗?
虽然在本例中可以更改"base_c game2 =…"必须保持为base_c,不能更改为other_c.
是的,如果你的意图是让子类扩展方法D中的继承行为,那么模式是在子类对D的重写中调用base.d()。
如果你的意图是替换继承的行为(而不是扩展),那么你就不会调用基方法。
您还可以选择是在重写方法中执行任何操作之前首先调用基方法,还是在重写方法中的代码中间或之后调用基方法。
在适当的情况下,这些都是有效的技术。