是否会自动调用基类的构造函数?

李van
class Person
{
    public int age;
    public Person()
    {
        age = 1;
    }
}

class Customer : Person
{
    public Customer()
    {
        age += 1;
    }
}

Customer customer = new Customer();

客户年龄为2岁?看来无论如何都将调用基类的构造函数。如果是这样,为什么base有时需要在最后打个电话呢?

public Customer() : base()
{
    .............
}
Tejs

这就是C#的工作方式。类型层次结构中每种类型的构造函数将按照“最基本->最派生”的顺序​​进行调用。

因此,在您的特定实例中,它调用Person(),然后Customer()在构造函数中调用有时需要使用base构造函数的原因是,当前类型下方的构造函数需要其他参数。例如:

public class Base
{
     public int SomeNumber { get; set; }

     public Base(int someNumber)
     {
         SomeNumber = someNumber;
     }
}

public class AlwaysThreeDerived : Base
{
    public AlwaysThreeDerived()
       : base(3)
    {
    }
}

为了构造AlwaysThreeDerived对象,它具有无参数构造函数。但是,Base类型不是。因此,为了创建无参数的构造函数,您需要为基本构造函数提供一个参数,您可以通过base实现来实现。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java是否会自动调用抽象类的构造函数?

python:ctypes,argtypes是否会自动调用构造函数?

自动实现一个构造函数,该构造函数调用特定的基类构造函数

是否可以从基类构造函数调用派生类构造函数?

从派生类构造函数调用基类构造函数

基类的构造函数不能调用吗?

(为什么)在纯虚拟派生类中是否需要虚拟基类构造函数调用?

在成员构造函数之后调用基类构造函数

在调用基类构造函数时声明默认构造函数

从派生复制构造函数调用基类的移动构造函数

这时基类的构造函数在构造函数中被调用

是否可以从构造函数中自动推导基类模板参数?

是否可以从可变参数模板调用多个基类构造函数?

从超类构造函数调用基类重写方法

从Java中的派生类调用基类构造函数

从模板派生类调用模板基类的构造函数

调用基类构造函数而不命名其类

在声明派生类时调用基类的构造函数

虚拟继承是否会强制基类默认可构造?

基类中删除的构造函数会影响子类吗?

重载括号()是否会影响构造函数调用?

在派生类 C++ 的构造函数中调用基类的构造函数

如何在Scala中从派生类辅助构造函数调用辅助基类构造函数?

让隐式派生类构造函数调用基类构造函数

C ++派生类构造函数调用基类构造函数错误

在基类构造函数中调用虚拟方法

如何在多级继承中调用基类构造函数?

在C ++中调用基类模板构造函数

C ++:在基类的构造函数中调用重写的方法