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 } } |
重写虚拟方法就是这样做的,重写默认(基本)实现并用新的实现替换它。但是,如果没有为虚拟方法提供任何重写的实现,则会自动获取基本实现。因此,您的问题的答案是,首先不要重写
1 | class B : A {} |
但是,如果您需要保留基实现但希望扩展它,那么可以使用
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); } } |