C# 如何在c语言中实现基类的虚方法,以及如何在override方法中实现基类的虚方法#

C# 如何在c语言中实现基类的虚方法,以及如何在override方法中实现基类的虚方法#,c#,C#,我有一个抽象类A,它有部分实现的虚拟方法,它在类B中继承。我想在派生类中实现虚拟方法,我应该如何在派生类中获得基本实现。 比如说 public abstract class A { public int Sum { set; get; } public virtual void add(int a, int b) { Sum = a + b; } } class B : A { public override void add(int a,

我有一个抽象类A,它有部分实现的虚拟方法,它在类B中继承。我想在派生类中实现虚拟方法,我应该如何在派生类中获得基本实现。 比如说

public abstract class A
{
    public int Sum { set; get; }
    public virtual void add(int a, int b)
    {
        Sum = a + b;
    }
}
class B : A
{
    public override void add(int a, int b)
    {
        // what should i write here
    }
}

只需调用基类函数:

class B : A
{
    public override void add(int a, int b)
    {
        // do operation related to derived class 
        // call your base function
        base.add(a, b);
    }
}

重写虚拟方法就是这样做的,重写默认(基本)实现并用新实现替换它。但是,如果没有为虚拟方法提供任何重写的实现,则会自动获得基本实现。因此,您的问题的答案是,首先不要覆盖
add
方法:

但是,如果需要保留基本实现但希望扩展它,可以使用
base
关键字从派生类显式调用基本实现。例如:

class B : A
{
    public override void add(int a, int b)
    {
        base.add(a, b);
        DoSomethingElse();
    }
}

“我不认为使用C++线程来重复链接是公平的(这个主题看起来多么基本)。哦,对不起,我误读了。我认为它是C++,而不是C语言。我仍然很确定这个问题以前被问过,在C语言的上下文中,这是正确的答案。
class B : A
{
    public override void add(int a, int b)
    {
        base.add(a, b);
        DoSomethingElse();
    }
}
public abstract class A
{
    public int Sum { set; get; }
    public virtual void add(int a, int b)
    {
        Sum = a + b;
    }
}

class B : A
{
    public override void add(int a, int b)
    {
        //do your sufff

        //call base method of class A
        base.add(a, b);
    }
}