我的代码是public class Parent{ public Parent(int i) { Console.WriteLine("parent"); }}public class Child : Parent{ public Child(int i) { Console.WriteLine("child"); }}我收到错误消息:父级不包含采用0个参数的构造函数。我知道问题是Parent没有0参数的构造函数。但是我的问题是,为什么我们需要一个零参数的构造函数?为什么没有它,代码不起作用?
3 回答
慕神8447489
TA贡献1780条经验 获得超1个赞
由于您没有显式调用父构造函数作为子类构造函数的一部分,因此对无参数的父构造函数进行了隐式调用。该构造函数不存在,因此您会收到该错误。
要纠正这种情况,您需要添加一个显式调用:
public Child(int i) : base(i)
{
Console.WriteLine("child");
}
或者,您可以只添加一个无参数的父构造函数:
protected Parent() { }
料青山看我应如是
TA贡献1772条经验 获得超8个赞
您需要将孩子的构造函数更改为:
public child(int i) : base(i)
{
// etc...
}
之所以收到错误,是因为您的父类的构造函数采用了一个参数,但没有将该参数从子级传递给父级。
构造函数不在C#中继承,您必须手动链接它们。
千巷猫影
TA贡献1829条经验 获得超7个赞
您需要将child类的构造函数更改为此:
public child(int i) : base(i)
{
Console.WriteLine("child");
}
该部分: base(i)意味着int应该使用具有一个参数的基类的构造函数。如果缺少此属性,则将隐式告诉编译器使用不带参数的默认构造函数。因为在基类中不存在这样的构造函数,所以它给您这个错误。
- 3 回答
- 0 关注
- 1516 浏览
添加回答
举报
0/150
提交
取消