错误:父类不包含接受0个参数的构造函数
本文关键字:0个 参数 构造函数 包含接 父类 错误 | 更新日期: 2023-09-27 18:07:25
最初我收到一个错误,我不能命名"_coffee"在咖啡类" coffee",因为成员名不能与其封闭类型相同。当我将名称更改为_coffee时,我收到一个错误,"coffeeShop不包含接受0个参数的构造函数"。我在网上找到了解决方案,但他们似乎不适用或工作正确为我的应用程序。请帮助。
public class coffeeShop
{
string _size;
string _type;
public coffeeShop(string size, string type)
{
_size = size;
_type = type;
}
public override string ToString()
{
return String.Format("Thanks for ordering: {0}, {1}", _size, _type);
}
}
class Coffee : coffeeShop
{
string _size;
string _type;
string _caffiene;
public virtual void _Coffee( string size, string type, string caffiene)
{
_caffiene = caffiene;
_size = size;
_type = type;
}
public override string ToString()
{
return String.Format("Product Information for: {0} {1} {3}", _size, _type, _caffiene);
}
}
如果构造函数没有在你的类型中定义,c#编译器会发出一个默认的(无参数的)构造函数。这就是它试图为您的Coffee类做的事情(默认情况下是在基类中寻找要调用的无参数构造函数),但是您的基类(coffeeShop)只定义了一个接受2个参数的构造函数。
所以,任何子类都需要通过base
关键字显式调用这个构造函数:
public Coffee(string size, string type, string caffiene) : base(size, type)
{
_caffiene = caffiene;
}
变化
public virtual void _Coffee( string size, string type, string caffiene)
{
_caffiene = caffiene;
_size = size;
_type = type;
}
public Coffee(string size, string type, string caffiene)
: base(size, type)
{
_caffiene = caffiene;
_size = size;
_type = type;
}
或添加
public coffeeShop()
{
}
将在基类
中定义一个无参数构造函数。请注意,您正在重新声明大小和类型,将构造函数更改为
会更有意义。public Coffee(string size, string type, string caffiene)
: base(size, type)
{
_caffiene = caffiene;
}
将_size
和_type
从Coffee
类中移除,并在基类(coffeeShop
)中声明为protected