我剛剛發佈了關於抽象方法,我認爲這是它不能編譯的原因。方法不是抽象的,也不會覆蓋方法
超類
public abstract class Monster extends GameCharacter {
public abstract int getxP();
protected int monsterXP;
public Monster(String name, int health, int attack, int xp) {
super(name, health, attack);
this.monsterXP = xp;
}
我的子類
public class Goblin extends Monster {
public Goblin(String name, int health, int attack, int xp){
super(name, health, attack, xp);
}
public Goblin(){
this("Goblin", 70, 15, 2);
}
}
error:Goblin is not abstract and does not override abstract method getxP() in Monster
所以我不知道這是怎麼回事這裏的代碼是在方面構造超類GameCharacter相同。我不明白爲什麼XP不同於名稱,健康和攻擊。
爲清楚起見,我怎麼安排我的超類
public abstract class GameCharacter {
public abstract String getName();
public abstract int getHealth();
public abstract int getAttackPower();
protected String gameCharacterName;
protected int gameCharacterHealth;
protected int gameCharacterAttack;
public GameCharacter(String name, int health, int attack){
this.gameCharacterName = name;
this.gameCharacterHealth = health;
this.gameCharacterAttack = attack;
}
}
你需要重寫'getxP();'in 'Goblin'如果你擴展一個'abstract'類,你必須'覆蓋'所有'ABSTRACT'方法。 – 3kings
我認爲這個錯誤是不言自明的,哪部分編譯錯誤消息不理解? 「錯誤:Goblin不是抽象的,並且不會在Monster中覆蓋抽象方法getxP()」 – alfasin