使派生类需要基本方法

时间:2012-02-18 15:56:06

标签: c#

我正在构建一些类,我在基类中有一个方法需要包含在方法的派生类实现中。

我如何执行此操作?

例如:

public class base{
  public base(){}

  public void Method(base val){
    //Logic implementation
  }
}

public class derive:base{
  public derive():base(){}

  public void Method(derive val){
    base.Method(val);

    //Logic implementation
  }
}

2 个答案:

答案 0 :(得分:4)

由于您需要基类中的实际功能并在派生类中增加该功能,我建议在基类中使用一个可以调用的公共方法,该方法又调用在派生类中实现的抽象方法:

public abstract class BaseClass
{
  public BaseClass(){}

  public void Method(int val)
  {
      //base class logic here
      //now call DoSomething implementation
      DoSomething(val);
      //some other base class logic here
  }

  protected abstract void DoSomething(int val);
}

public class Derived : BaseClass
{
    protected override void DoSomething(int val)
    {
       //other logic
    }
}

此模式称为Template method pattern或非虚拟接口(NVI)模式。

答案 1 :(得分:0)

制作方法abstract

public class base{
  public base(){}

  public abstract void Method(base val);
}

在派生类中,您需要使用override

标记方法
public override void Method(derive val){

如果要在基类中创建默认实现,则标记方法virtual而不是abstract,但是您不能要求派生类实现该方法。