日期:2014-05-17  浏览次数:20871 次

派生类不继承父类的构造函数吗?
MSDN中说到:派生类隐式获得基类的除构造函数和析构函数以外的所有成员。构造函数不能继承。
但有的书上说:在子类创建对象的时候,会隐式调用父类的无参构造函数。


那到底派生类是否继承父类的构造函数呢?

------解决方案--------------------
引用:
MSDN中说到:派生类隐式获得基类的除构造函数和析构函数以外的所有成员。构造函数不能继承。
但有的书上说:在子类创建对象的时候,会隐式调用父类的无参构造函数。


那到底派生类是否继承父类的构造函数呢?


不继承,可以在构造函数后用base显示调用父类构造函数。
new子类时,会先调用基类构造函数,在调用子类构造函数
------解决方案--------------------
先确定,什么叫继承构造函数,如何叫继承构造函数?
------解决方案--------------------
其实用反射枚举一个类的所有字段,方法,就应该知道了。
------解决方案--------------------
继承和委派调用是两个不同的概念,不要搞混了!

以前有的人以为“子类对象内部一定有一个父类型对象,然后子类对象的所有对外调用都委派给这个父类型对象”,这是对继承的完全的曲解。在10年前的一些垃圾的书、特别是c++方面的书,有一些就是这样毒害读者的(这是因为那个时候有许多c++的低级实现方法就是这样做的)。

实际上,继承是“对消”,也就是.net中的“重写”。在子类对象内部并不存在着一个父类对象,而是它们根本“就是”同一个对象。(不管你临时使用的OOPL是如何实现继承的,但是继承的宗旨高于具体的实现)

回到这个问题,对象的“构造函数”不支持继承,因为我们必须让不同的构造函数串联起来而不是重写。构造函数不是面向对象的设计概念,而是纯粹实现时才用到的一个概念。
------解决方案--------------------
不繼承,因為構造函數與類名保持一致,繼承的話就無法保持一致,就是錯誤的。