【问题标题】:Why do derived classes need to use a base class constructor为什么派生类需要使用基类构造函数
【发布时间】:2017-12-18 21:57:30
【问题描述】:

标题解释了我所相信的一切。

在 C# 中,我现在知道,无论是显式调用还是隐式默认构造函数,派生类中的构造函数都会调用基类构造函数。我的问题是为什么?我认为这是因为派生类需要创建基类的对象,但为什么呢?

【问题讨论】:

    标签: c# oop inheritance constructor


    【解决方案1】:

    正如 Scott Chamberlain 所说,派生类是某种东西(加上更多功能)。

    当然,对象可以在构造函数中具有行为。

    无论如何,如果你不需要继承它们,你应该以正确的方式构建你的代码,

    您应该将基本构造函数留空,具体取决于您的具体需求

    【讨论】:

      【解决方案2】:

      我认为是因为派生类需要创建基类的对象,但为什么呢?

      派生类的实例基类的实例。如果您对构建动物时必须发生的事情制定了规则,并且您正在构建长颈鹿,那么不知何故您必须执行构建动物的规则。在 C# 中,该机制是“调用基类构造函数”。

      【讨论】:

        【解决方案3】:

        假设汽车是您的抽象类,bmw、mazda、jeep 是您的驱动类。 你有字段:名称,型号,.. 你有构造函数:car(),car(string model)

        在汽车类中,那么当编译器为对象分配内存时需要读取抽象构造函数以了解名称、模型。 这将调用默认构造函数。但是你可以使用 base("z4") 来强制调用抽象类中重写的构造函数。

        【讨论】:

          【解决方案4】:

          派生类是基类加上派生类添加的额外内容。

          您仍然需要一些代码来初始化基类部分,以便您可以在顶部添加额外的部分。对基本构造函数的调用是初始化发生的地方。

          【讨论】:

            猜你喜欢
            • 2011-02-24
            • 2020-04-23
            • 2013-01-28
            • 2016-07-19
            • 2014-06-23
            • 2020-04-07
            • 2018-07-21
            • 2015-08-18
            • 2018-07-16
            相关资源
            最近更新 更多