如何实现基类的虚方法,并在c#中的覆盖方法中获取基方法实现

时间:2017-01-23 06:24:39

标签: 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, int b)
    {
        // what should i write here
    }
}

3 个答案:

答案 0 :(得分:7)

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

class B : A {}

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

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

答案 1 :(得分:3)

只需调用基类函数:

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);
    }
}

答案 2 :(得分:3)

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);
    }
}