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.

c#继承一般然后是特定的

是的,如果你的意图是让子类扩展方法D中的继承行为,那么模式是在子类对D的重写中调用base.d()。

如果你的意图是替换继承的行为(而不是扩展),那么你就不会调用基方法。

您还可以选择是在重写方法中执行任何操作之前首先调用基方法,还是在重写方法中的代码中间或之后调用基方法。

在适当的情况下,这些都是有效的技术。