【发布时间】:2017-12-18 21:57:30
【问题描述】:
标题解释了我所相信的一切。
在 C# 中,我现在知道,无论是显式调用还是隐式默认构造函数,派生类中的构造函数都会调用基类构造函数。我的问题是为什么?我认为这是因为派生类需要创建基类的对象,但为什么呢?
【问题讨论】:
标签: c# oop inheritance constructor
标题解释了我所相信的一切。
在 C# 中,我现在知道,无论是显式调用还是隐式默认构造函数,派生类中的构造函数都会调用基类构造函数。我的问题是为什么?我认为这是因为派生类需要创建基类的对象,但为什么呢?
【问题讨论】:
标签: c# oop inheritance constructor
正如 Scott Chamberlain 所说,派生类是某种东西(加上更多功能)。
当然,对象可以在构造函数中具有行为。
无论如何,如果你不需要继承它们,你应该以正确的方式构建你的代码,
您应该将基本构造函数留空,具体取决于您的具体需求
【讨论】:
我认为是因为派生类需要创建基类的对象,但为什么呢?
派生类的实例是基类的实例。如果您对构建动物时必须发生的事情制定了规则,并且您正在构建长颈鹿,那么不知何故您必须执行构建动物的规则。在 C# 中,该机制是“调用基类构造函数”。
【讨论】:
假设汽车是您的抽象类,bmw、mazda、jeep 是您的驱动类。 你有字段:名称,型号,.. 你有构造函数:car(),car(string model)
在汽车类中,那么当编译器为对象分配内存时需要读取抽象构造函数以了解名称、模型。 这将调用默认构造函数。但是你可以使用 base("z4") 来强制调用抽象类中重写的构造函数。
【讨论】:
派生类是基类加上派生类添加的额外内容。
您仍然需要一些代码来初始化基类部分,以便您可以在顶部添加额外的部分。对基本构造函数的调用是初始化发生的地方。
【讨论】: