2

错误是:

FirstPattern.Character.Character' 不包含采用 0 个参数的构造函数

这是代码:

public interface WeaponBehavior
{
    void UseWeapon();
}

class SwordBehavior : WeaponBehavior
{
    public void UseWeapon()
    {
        Console.WriteLine("A sword as plain as your wife.");
    }
}

然后,我有一个字符类:

public abstract class Character
{
    WeaponBehavior weapon;

    public Character(WeaponBehavior wb)
    {
        weapon = wb;
    }

    public void SetWeapon(WeaponBehavior wb)
    {
        weapon = wb;
    }

    public abstract void Fight();
}



public class Queen : Character
{        
    public Queen(WeaponBehavior wb)
    {
        SetWeapon(wb);
    }

    public override void Fight()
    {

    }
}

我不确定我应该对角色类和子类做什么。你们能把我推向正确的方向吗?

4

1 回答 1

1

由于Queen派生自Character并且Character只有一个带WeaponBehavior参数的构造函数,因此您需要在构造函数中显式调用基本构造Queen函数 - 这意味着对SetWeapon您的调用也是不必要的:

public Queen(WeaponBehavior wb) : base(wb)
{
}

或者,您可以提供一个默认构造函数Character并保持原始代码不变:

public abstract class Character
{
   WeaponBehavior weapon;

   public Character() { }
   ...
于 2011-02-03T03:21:00.920 回答