C#继承防止基类方法调用派生类方法

标签 c# inheritance

我有一个基类和一个派生类,如下所示:

//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/

相关文章:

inheritance - GORM继承自定义标识符

c# - 以指定的时间间隔运行方法c#

c# - 在 MVC 中将数据从 View 传递到部分 View

c# - SqlDependency - "Login failed for user ' sa'。

c# - DateTime.Parse 中的连字符?

c# - 如何从另一个窗体在窗体图片框上绘制矩形

asp.net-mvc - 继承自实体类,因此可以在 Entity Framework 中使用

c++ - 多重继承是编译器编写者的问题吗? -C++

Swift 继承问题泛型

Java - 在接口(interface)中声明变量但不分配它们