![](/img/trans.png)
[英]Is it possible to require a derived class to implement a virtual method from base class?
[英]Calling base class's virtual method from derived class instance
我想举例说明主要问题。
public class BaseClass
{
public virtual void Add()
{
Console.WriteLine("Add call from BaseClass");
}
public virtual void Edit()
{
Console.WriteLine(" Edit call from BaseClass");
this.Get();
}
public virtual void Get()
{
Console.WriteLine(" Get call from BaseClass");
}
}
public class DerivedClass:BaseClass
{
public override void Add()
{
Console.WriteLine(" Add call from DerivedClass");
base.Edit();
}
public override void Edit()
{
Console.WriteLine(" Edit call from DerivedClass");
}
public override void Get()
{
Console.WriteLine(" Get call from DerivedClass");
}
}
叫像
DerivedClass d = new DerivedClass();
d.Add();
结果 :
但我想得到的结果是:
当派生类调用其自己的Add方法时, Add方法将调用基类EDit方法。 当从派生类称为基类的编辑方法,它要求得到 派生类的方法。 但是我想调用基类的get方法。 我该如何实现?
我该如何实现?
如果您不希望虚拟调度,则不要调度虚拟方法 。 派遣非虚拟方法。 这意味着必须存在非虚拟方法,因此让我们编写一个。 然后变得很明显,必须如何调用它:
public class BaseClass
{
public virtual void Add() { ... }
public virtual void Edit() { this.BaseGet(); }
public virtual void Get() { this.BaseGet(); }
private void BaseGet() { ... }
}
那怎么做你想要什么,但这里更重要的问题是,为什么你要去做这件事情? 设计类层次结构可能是更好的方法,但是如果不了解您真正想做什么,就很难为您提供建议。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.