[英]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.