写一个打怪兽的小程序,需要将MonsterBattle3改动一下使得它可以使用定义的接口
提示 Battleable的接口只定义了receiveDamage的method,只有这个可见。
receiveDamage中,checkStatus 的method也被呼出,但Battleable interface中没有指定
hitPoint是instance,没有在interface中声明。
直接呼出将会被检查,接下来只要确定呼出的method
我直接从日语翻译过来的。。。所以很奇怪。
我也看不懂他想表达什么
hitPointフィールドもインタフェースでは宣言されていない。直接呼
出すメソッドが可視かどうかだけがチェックされ、あとは呼び出されたメソッドが動作すればよいのです。
public class MonsterBattle3 {
public static void main(String[] args) {
Monster[] monsterArray = new Monster[3]; // 書き換えた。
monsterArray[0] = new Slime();
int power = 5;
for (int n = 1; n <= 10; n++) {
System.out.println("% Start Round " + n + "!");
for (int i = 0; i < 3; i++) {
monsterArray[i].receiveDamage(power); // (1)
}
}
}
}
public abstract class Monster {
String name;
int hitPoint; // or health point
String status = "active"; // hitPoint <= 0で"killed"になる。
public boolean checkStatus() {
if (hitPoint <= 0) {
System.out.println(name + " was killed.");
status = "killed";
return false; // killedになったときにfalseを返す。
} else {
return true; // activeならtrueを返す。
}
}
}
public class Slime extends Monster implements Battleable{
// Constructor
Slime() {
name="Slime";
hitPoint=50;
System.out.println(name + "が現れた!");
}
public void receiveDamage(int p) {
if(status.equalsIgnoreCase("active") ) { // activeのときだけ戦う。
int damage= p*5;
hitPoint = hitPoint - damage;
checkStatus();
}
}
}
public interface Battleable {
void receiveDamage(int p);
}
修改MonsterBattle3使其可以执行并不报错
可能没人看得懂要做什么。。。
可是我真的不知道应该怎么办