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


how to implement virtual method of base class and also get the base method implementation in override method in c#

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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
    }
}


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

1
class B : A {}

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

1
2
3
4
5
6
7
8
class B : A
{
    public override void add(int a, int b)
    {
        base.add(a, b);
        DoSomethingElse();
    }
}


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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);
    }
}


只需调用基类函数:

1
2
3
4
5
6
7
8
9
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);
    }
}