【发布时间】:2013-01-11 20:03:01
【问题描述】:
我如何调用基类的构造函数我已经调用了自己的构造函数?
问题是,基类的构造函数调用了一个抽象方法(子类重写),需要访问变量x,在子类的构造函数中初始化?
简短的示例代码:
abstract class BaseClass
{
protected string my_string;
protected abstract void DoStuff();
public BaseClass()
{
this.DoStuff();
}
}
class SubClass : BaseClass
{
private TextBox tb;
public SubClass()
: base()
{
this.my_string = "Short sentence.";
}
protected override void DoStuff()
{
// This gets called from base class' constructor
// before sub class' constructor inits my_string
tb.Text = this.my_string;
}
}
编辑:根据答案,这显然是不可能的。创建 SubClass 的每个对象后,是否有自动调用 this.DoStuff(); 的方法?当然,我可以在子类的构造函数中的所有其他行之后添加this.DoStuff();,但是拥有大约 100 个这样的类,感觉很愚蠢。还有其他解决方案,还是我应该使用手动解决方案?
【问题讨论】:
-
实际上我不认为你可以,至少不能以一种标准的方式(使用反射也许你可以,但我认为这不是一个好方法)
-
你不能。想想看 - 你的班级依赖于它的父班级。如何在不先创建父级的情况下创建类的实例?
-
查看我的编辑。我想我只是在每个子类的构造函数中手动添加一行,没什么大不了的。仍然值得问:-)
标签: c# class inheritance constructor superclass