I have a base class with two constructors: a default constructor and a parameterized constructor. Another class inherits from that base class and it only has a default constructor. How can I call the base class's parameterized constructor from the derived class?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
It's not entirely clear what your question is, but I suspect you either want to add an explicit parameterless constructor to your child class:
// Parameterless child constructor calling parameterized base constructor
public Child() : base("foo", "bar") {
}
or add both a parameterized and parameterless one:
public Child() {
}
public Child(string foo, string bar) : base(foo, bar) {
}
Note that constructors aren't inherited - so just because a base class has a particular constructor signature doesn't mean you can instantiate a class using that signature. The child class has to provide it itself.
Any compiler-provided parameterless constructor will always call the parameterless constructor of its base class.
回答2:
Something like this?
class Parent
{
public Parent(){}
public Parent(string s) {}
}
class Child : Parent
{
public Child() : base("42") { }
}
回答3:
Here you go:
// 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
}
}