繁体   English   中英

构造函数继承

[英]Constructors inheritance

我试图了解但仍然不确定。 如果基类中有构造函数,派生类将始终调用它? 我知道他们可以覆盖它(这里不是正确的术语,我知道 - 我的意思是将代码添加到它们的构造函数中)但我假设如果构造函数是在基类中定义的,派生的构造函数将始终调用它。 真的吗?

是的,如果有一个无参数构造函数,它将始终被调用。 如果有多个构造函数,您可以选择使用base关键字调用哪个构造函数:

class Parent {
    public Parent() {}
    public Parent(int x) {}
}

class Child : Parent {
    public Child(int x) : base(x) {
    }
}

如果没有参数构造函数,您将被迫执行此操作:

class Parent {
    public Parent(int x) {}
}

class Child : Parent {
    // This will not compile without "base(x)"
    public Child(int x) : base(x) {
    }
}

如果基类中只有无参数构造函数,则子类构造函数将始终首先调用它。 另一方面,如果您在基类中定义了其他构造函数,那么子类将有一个选项,用于调用基础构造函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM