java - 构造函数不能应用于给定类型

java - constructor cannot be applied to given types

我正在开发一个简单的游戏。我创建了一个名为 Monster 的 class 和一个构造函数作为所有怪物的基本模板。这是 Monster class:

public class Monster {
    public int attackPower;
    public String weaponName;
    public int armorLevel;
    public String armorName;
    public int life;
    public String monsterClass;
    public String monsterName;
    public int monsterNumber;

    public Monster(int attackPower, String weaponName, int armorLevel, String armorName, int life, String monsterClass, String monsterName, int monsterNumber) {
        this.attackPower = attackPower;
        this.weaponName = weaponName;
        this.armorLevel = armorLevel;
        this.armorName = armorName;
        this.life = life;
        this.monsterClass = monsterClass;
        this.monsterName = monsterName;
        this.monsterNumber = monsterNumber;
    }
}

这里是class我放在一起测试构造函数:

public class Area1Monsters extends Monster {
    public static void main(String[] args) {

        Monster rat1 = new Monster(1, "Claws", 3, "Fur", 9, "Fields", "Rat", 1);

        System.out.println("Attack Power: " + rat1.attackPower);
        System.out.println("Weaon Name: " + rat1.weaponName);
        System.out.println("Armor Level: " + rat1.armorLevel);
        System.out.println("Armor Name: " + rat1.armorName);
        System.out.println("HP: " + rat1.life);
        System.out.println("Starting Area: " + rat1.monsterClass);
        System.out.println("Name: " + rat1.monsterName);
        System.out.println("Monster Number: " + rat1.monsterNumber);
    }
}

错误显示 constuctor Monster in class Monster cannot be applied to given type; required: int, java.lang.String, int, java.lang.String...

我相信我已经正确匹配了从构造函数到 rat1 对象创建应用程序的每个数据类型,但我显然遗漏了一些东西。我敢肯定这是显而易见的和基本的。非常感谢任何帮助。

鉴于子class中缺少任何显式构造函数,编译器生成一个默认构造函数,期望能够调用super(),超class构造函数没有参数。要 subclass 没有无参数构造函数的 class,您需要提供一个调用您拥有的 superclass 构造函数的显式构造函数。

或者,从 Area1Monsters 中删除 "extends" 子句。

您必须以这种方式更改您的 Area1Monsters 声明:

public class Area1Monsters 

没有 extends 关键字。

我认为这与继承有关。你的子类有一个隐式的空构造函数。

您需要在超类中定义一个空构造函数或在 Area1Monsters 中定义一个显式构造函数。显式构造函数必须调用超类构造函数(使用默认值或空值)