是否可以在C#中覆盖构造函数?

时间:2012-06-30 06:12:45

标签: c# oop constructor

是否可以覆盖派生类中基类的构造函数?

如果是这样,它如何实现以及在哪种用例中实用?如果没有,为什么不呢?

3 个答案:

答案 0 :(得分:46)

不,你不能覆盖构造函数。这个概念在C#中没有意义,因为构造函数根本不是多态调用的。您总是说明您要构建的类,以及构造函数的参数。

构造函数根本不是继承的 - 但派生类中的所有构造函数必须链接到同一个类中的另一个构造函数,或者链接到基类中的一个构造函数。如果不明确地执行此操作,则编译器会隐式链接到基类的无参数构造函数(如果该构造函数不存在或无法访问,则会发生错误。)

答案 1 :(得分:14)

不,构造函数不是继承的。您不能在派生类中覆盖它们 的原因

  

将永远调用基础构造函数   每个来自对象的类,因为每个类都必须有   至少一个调用base()构造函数的构造函数(显式   或隐式)并且最终必须对this()构造函数进行每次调用   调用base()构造函数。

答案 2 :(得分:8)

不,你不能覆盖构造函数。

如果您查看构造函数的基本语法,它应该与您为其编写的类具有相同的名称。

可以说,你编写了一个与基类名称相同的方法(与基类构造函数的名称相同),它只是派生类中的一个新方法,没有指定返回类型,这在语法上是不正确的