抽象类构造函数

时间:2010-07-15 08:52:17

标签: c# oop

  

可能重复:
  Why can’t I create an abstract constructor on an abstract C# class?

抽象类的构造函数可以标记为“抽象”吗?

3 个答案:

答案 0 :(得分:18)

没有。 C#在任何版本中都不支持此功能。请注意,构造函数在派生类中不是继承,尽管它们可以“链接”。这可能就是你想要做的事情。

如果要表明派生类应该进行某种初始化,可以创建一个抽象的Initialise方法,或者基类的构造函数(以及子类的间接)调用的方法在创作上。

作为一个侧面点,我不确定CLR(或相关的CIL语言)是否真的支持它 - 我怀疑它可能,但由于刚才提到的原因,它在C#中几乎没有用处。

答案 1 :(得分:18)

不,构造函数不能标记为抽象。在抽象类中,构造函数通常标记为protected,至少这是我建议你做的。

答案 2 :(得分:2)

基本上没有。

如果它是抽象的,你必须在具体的子类中覆盖它,并且你不能覆盖构造函数,只能重载它。