使派生类中需要基方法
本文关键字:方法 派生 | 更新日期: 2023-09-27 18:24:59
我正在构建一些类,并且我在基类中有一个方法,该方法需要包含在该方法的派生类实现中。
我该怎么做?
例如:
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
,但不能要求派生类实现该方法。