2

我希望能够在我的基类 displaySomething() 中运行该方法,另外在我的子类中运行该方法 displaySomething()

这可能吗?请问我怎样才能做到这一点?

我有一个看起来像这样的基类

public class baseClass
{
    public void displaySomething()
    {
        MessageBox.Show("Method from base class: display something");
    }
}

我有一个看起来像这样的子类

public class subClass : baseClass
{

    public void displaySomething()
    {
        MessageBox.Show("Additional method to run after base class method");
    }

}

我有一个看起来像这样的按钮单击事件。

private void button1_Click(object sender, EventArgs e)
{     
    subClass mySubClass = new subClass();
    mySubClass.displaySomething();
}
4

1 回答 1

4

你需要在子类的覆盖方法的实现中添加基类的覆盖方法的调用,像这样:

public void displaySomething() {
    // You can decide to call the base before, after,
    // or in the middle of your new method.
    base.displaySomething();
    MessageBox.Show("Additional method to run after running base class method");
}

请注意,您的代码不会覆盖该方法,因为它没有被声明virtual。您需要像这样声明它:

public class baseClass {
    public virtual void displaySomething() ...
}
public class subClass : baseClass {
    public override void displaySomething() ...
}
于 2013-08-12T00:37:02.360 回答