标题解释了我所有的信念。
在C#中,我现在意识到,无论是派生类中的构造函数都将调用基类构造函数,无论它是显式调用还是隐式默认构造函数。我的问题是为什么?我认为这是因为派生类需要创建基类的对象,但为什么呢?
答案 0 :(得分:9)
派生类是基类加上派生类添加的额外内容。
您仍然需要一些初始化基类部分的代码,以便您可以在顶部添加额外的部分。对基础构造函数的调用是初始化发生的地方。
答案 1 :(得分:9)
我认为这是因为派生类需要创建基类的对象,但为什么呢?
派生类的实例是基类的实例。如果你有一个规则来构建一个Animal时必须发生的事情,而你正在构建一个长颈鹿,那么以某种方式你必须执行构建一个Animal的规则。在C#中,机制是"调用基类构造函数"。
答案 2 :(得分:1)
让我们说这辆车是你的抽象级别,宝马,马自达,吉普车是你的驾驶课程。 你有字段:名称,型号,.. 你有constroctor:car(),car(string model)
在汽车类中,那么当编译器为对象做内存分配时需要读取抽象构造函数以了解Name,Model。 这将调用默认构造函数。但你可以使用base(" z4")强制在抽象类中调用重写的构造函数。答案 3 :(得分:1)
正如斯科特张伯伦所说,衍生类是某种东西(加上一些更多的特征)。
当然,对象可以在构造函数中有行为。
无论如何,如果你不需要继承它们,你应该以正确的方式构建你的代码,
你应该把基础构造函数留空,取决于你的具体需求