如果派生类没有参数化构造函数,我该如何从派生类调用基类的参数化构造函数?
问题描述:
我有一个基类有两个构造函数:默认构造函数和参数化构造函数。另一个类继承自该基类,它只有一个默认构造函数。我如何从派生类调用基类的参数化构造函数?如果派生类没有参数化构造函数,我该如何从派生类调用基类的参数化构造函数?
答
这不是完全清楚你的问题是什么,但我怀疑你要么需要一个明确参数的构造函数添加到您的子类:
// Parameterless child constructor calling parameterized base constructor
public Child() : base("foo", "bar") {
}
或同时添加参数和参数的一个:
public Child() {
}
public Child(string foo, string bar) : base(foo, bar) {
}
注意构造不继承 - 所以仅仅因为一个基类公顷一个特定的构造函数签名并不意味着你可以使用该签名实例化一个类。孩子班必须自己提供。
任何编译器提供的无参数构造函数将始终调用其基类的无参数构造函数。
答
这样的事情?
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
}
}