在下面的示例中,我想替换一部分计算,而不必在派生子类中重新实现整个计算。
class DummyCalcBase
{
public int changeable_part()
{
return 5;
}
public int common_calculation()
{
return 5 * changeable_part();
}
}
class DummyCalc : DummyCalcBase
{
public new int changeable_part()
{
return 10;
}
}
class Program
{
static void Main(string[] args)
{
int c = new DummyCalcBase().common_calculation();
Console.WriteLine("Base gives " + c.ToString());
int c2 = new DummyCalc().common_calculation();
Console.WriteLine("Calc gives " + c2.ToString());
}
}
然后给出输出:Base给出25 Calc给出25
我想要的是获取DummyCalc()。common_calculation()来调用新的changeable_part(并给出答案50)。
这意味着我不必将相同的方法复制并粘贴到子类中。
你可以override
方法,如果是virtual
class DummyCalcBase
{
public virtual int changeable_part()
{
return 5;
}
public int common_calculation()
{
return 5 * changeable_part();
}
}
class DummyCalc : DummyCalcBase
{
public override int changeable_part()
{
return 10;
}
}
new
仅带有关键字的方法隐藏基类的方法
如果方法是虚拟的,则以下代码将计算50:
DummyCalcBase dummy = new DummyCalc();
int calc = dummy.common_calculation();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句