繁体   English   中英

使派生类中需要基本方法

[英]Make base method required in derived class

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

我如何执行此操作?

例如:

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

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

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

此模式称为模板方法模式或非虚拟接口(NVI)模式。

使方法abstract

public class base{
  public base(){}

  public abstract void Method(base val);
}

在派生类中,您需要使用override标记方法

public override void Method(derive val){

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM