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 中定义一个显式构造函数。显式构造函数必须调用超类构造函数(使用默认值或空值)
我正在开发一个简单的游戏。我创建了一个名为 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 中定义一个显式构造函数。显式构造函数必须调用超类构造函数(使用默认值或空值)