【发布时间】:2015-12-03 04:28:42
【问题描述】:
我刚刚发布了关于抽象方法的帖子,我认为这就是它无法编译的原因。
超级类
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);
}
}
错误:Goblin 不是抽象的,也没有覆盖抽象方法 怪物中的getxP()
所以我不确定这里发生了什么,就构造函数而言,超类 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;
}
}
【问题讨论】:
-
你需要在
Goblin中覆盖getxP();如果你扩展一个abstract类,你必须OVERRIDE它的所有ABSTRACT方法。 -
我认为错误是不言自明的,编译错误消息的哪一部分你不明白? “错误:Goblin 不是抽象的,不会覆盖 Monster 中的抽象方法 getxP()”
标签: java