我有一个基类和一个派生类,如下所示:
//base class
public class BST
{
public virtual void Find();
public virtual void Insert()
{
Find();
}
}
// derived class
public class splayTree:BST
{
public override void Find()
{
base.Find();
...
}
public override void Insert()
{
base.Insert();
.....
}
}
我创建了一个splayTree对象splayTree后,
- 我调用
splayTree.Insert();
Insert()
调用base.Insert()
base.Insert()
调用派生类的Find()
。
如何让base.Insert()
调用基类的Find()
?
谢谢。
最佳答案
基类已将 Find 定义为 Virtual,这是一个信号,表明子类可以重写它,如果是这样,基类将使用该重写。
如果你想在你的子类中调用基Find,就不要实现Find。
如果您想在子类中定义一个名为 Find 的方法,该方法实际上并未连接到 base.Find,请使用 new 关键字而不是 override 关键字。
关于C#继承防止基类方法调用派生类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19238468/