【发布时间】:2018-02-24 03:08:26
【问题描述】:
我有一个方法 sleep(),它将实例的 int hp 设置为 final int MAX_HP。我把这个方法放在了 Warrior 和 Mage 类中,它们是 Character 的子类。这里的问题是我在每个子类中单独定义 MAX_HP,因为战士和法师会有不同的 Max_HP,所以似乎我还必须在每个类中声明 sleep() 而不是在父类中只声明一次 - 效率低下。有没有办法可以在父类中声明睡眠方法并以某种方式从子类中检索 MAX_HP?或者有更好的方法吗?
//Warrior Class
public class Warrior extends Adventurer{
private final int MAX_HP = 150;
public void sleep(){
setHp(MAX_HP);
System.out.println(getName() + "fully restored HP!");
}
}
//Mage Class
public class Mage extends Adventurer{
private final int MAX_HP = 100;
public void sleep(){
setHp(MAX_HP);
System.out.println(getName() + "fully restored HP!");
}
}
//Adventurer Class
public abstract class Adventurer{
private int hp;
public Adventurer(int hp){
this.hp = hp;
}
public int getHp(){
return this.hp;
}
public void setHp(int hp){
this.hp = hp;
}
【问题讨论】:
标签: java return arguments polymorphism parent-child