【发布时间】:2009-11-20 02:23:07
【问题描述】:
所以我有这门课
public class Options
{
public bool show { get; set; }
public int lineWidth { get; set; }
public bool fill { get; set; }
public Color fillColour { get; set; }
public string options { get; set; }
public virtual void createOptions()
{
options += "show: " + show.ToString().ToLower();
options += ", lineWidth: " + lineWidth;
options += ", fill: " + fill.ToString().ToLower();
options += ", fillColor: " + (fillColour != Color.Empty ? ColourToHex(fillColour) : "null");
}
public Options(bool _show, int _lineWidth, bool _fill, Color _fillColour)
{
show = _show;
lineWidth = _lineWidth;
fill = _fill;
fillColour = _fillColour;
createOptions();
}
}
以及另一个继承它的类
public class Line : Options
{
public static bool steps { get; set; }
public override void createOptions()
{
options += ", lines: {";
options += " steps: " + steps.ToString().ToLower() + ",";
base.createOptions();
options += "}";
}
public Line(bool _show, int _lineWidth, bool _fill, Color _fillColour, bool _steps)
: base(_show, _lineWidth, _fill, _fillColour) { steps = _steps; }
}
当调用对象Line(true, 1, true, Color.Gray, true) 时,它首先覆盖继承的类函数,然后将steps 设置为true。
我希望 steps 包含在覆盖中,因此 steps 现在将是 true 而不是 false(其默认值)。
如果可能的话,请给我一些关于如何解决这个问题的指示和提示,并向我解释为什么我的设置不允许在构造函数初始化之后发生覆盖。
【问题讨论】:
-
此代码无法编译。您从 createOptions 调用“createTypeOptions”但基础没有功能,并且基础没有采用 4 个参数的构造函数。
-
抱歉,当我将代码复制到 stackoverflow 时,createTypeOptions 应该是 createOptions,我一定错过了。也忘记了选项构造函数
-
是否有任何理由将步骤设置为静态?
标签: c# inheritance overriding virtual-functions