如果派生类没有参数化构造函数,如何从派生类调用基类的参数化构造函数?
我有一个带有两个构造函数的基类:默认构造函数和参数化构造函数。 另一个类inheritance自该基类,它只有一个默认的构造函数。 如何从派生类中调用基类的参数化构造函数?
目前还不完全清楚你的问题是什么,但我怀疑你要么在你的子类中添加一个显式的无参数构造函数:
// Parameterless child constructor calling parameterized base constructor public Child() : base("foo", "bar") { }
或添加参数化和无参数的:
public Child() { } public Child(string foo, string bar) : base(foo, bar) { }
请注意,构造函数不是inheritance的 – 因为基类具有特定的构造函数签名并不意味着您可以使用该签名实例化类。 儿童class必须自己提供。
任何编译器提供的无参数构造函数将始终调用其基类的无参数构造函数。
像这样的东西?
class Parent { public Parent(){} public Parent(string s) {} } class Child : Parent { public Child() : base("42") { } }
干得好:
// Parent class class Parent { public Parent() { // Paremeterless constructor } public Parent(string a, int b) { // Paremterised constructor } } // Child class class Child : Parent { public Child() :base("hi", 10) { // Parameterized constructor of the base class is invoked } }