错误:父类不包含接受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);
    }
}

错误:父类不包含接受0个参数的构造函数

如果构造函数没有在你的类型中定义,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_typeCoffee类中移除,并在基类(coffeeShop)中声明为protected