在base和派生类中运行相同的方法

时间:2011-05-14 18:57:32

标签: c#

首先在基类中运行该方法然后在派生类中运行相同的方法,我需要做什么?这是个好主意吗?

我希望在基类中运行常见操作,并在同一方法中在派生类中扩展它。这是通常的做法吗?

public abstract class MyBase
{
  void DoStuff()
  {
    //some common implementation
  }
}

public class MyDerived : MyBase
{
  void DoStuff()
  {
    // DoStuff in the base first
    // Then DoStuff in here
  }
}

3 个答案:

答案 0 :(得分:5)

你在谈论类似的东西吗?

class base
{
  protected virtual void method()
  {
     // do some stuff in base class, something common for all derived classes
  }
}

class derived :  base
{
  public override void method()
  {
    base.method(); // call method from base
    // do here some more work related to this instance of object
  }
}

这不是一个坏主意,当我为所有派生类提供一些通用功能时,我会使用它。

答案 1 :(得分:4)

如果你想保证运行基类逻辑(而不是依赖派生类是礼貌的),你可以这样做:

    public void Method()
    {
        //Stuff that should always happen in base class
        OnMethod();
    }

    protected virtual void OnMethod()
    {
        //Default base class implementation that derived class can either override or extend
    }

答案 2 :(得分:1)

使用base.TheMethod()从派生类中运行基类中的方法。

如果要从基类运行派生类的方法,则必须将基类强制转换为派生类。这意味着你的班级需要知道谁在推导它,这会破坏封装,应该避免。