如何实现基类的虚方法,并在c#中的覆盖方法中获取基方法实现[重复]
Posted
技术标签:
【中文标题】如何实现基类的虚方法,并在c#中的覆盖方法中获取基方法实现[重复]【英文标题】:how to implement virtual method of base class and also get the base method implementation in override method in c# [duplicate] 【发布时间】:2017-06-07 14:36:48 【问题描述】:我有一个抽象类 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
【问题讨论】:
@Derlin 我认为对重复链接使用 C++ 线程是不公平的(这个主题看起来很基础)。 哎呀,对不起,我看错了。我以为是 C++,而不是 C#。 我仍然很确定这个问题之前已经被问过,也是在 C# 的上下文中 【参考方案1】:覆盖虚拟方法就是这样做的,覆盖默认(基本)实现并将其替换为新实现。但是,如果您没有为虚拟方法提供任何覆盖的实现,您将自动获得基本实现。因此,您的问题的答案很简单首先不要覆盖add
方法:
class B : A
但是,如果您需要保留基本实现但希望扩展它,您可以使用base
关键字从派生类显式调用基本实现。例如:
class B : A
public override void add(int a, int b)
base.add(a, b);
DoSomethingElse();
【讨论】:
这是正确答案!【参考方案2】: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);
【讨论】:
【参考方案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);
【讨论】:
以上是关于如何实现基类的虚方法,并在c#中的覆盖方法中获取基方法实现[重复]的主要内容,如果未能解决你的问题,请参考以下文章
抽象派生类中的抽象方法覆盖/实现抽象基类的抽象或具体方法。如何以及为啥?