Java 是否可以将此方法放在父类中?
我有一个方法sleep(),它将实例的int hp设置为final int MAX_hp。我把这个方法放在战士和法师类中,它们是角色的子类。这里的问题是,我在每个子类中分别定义MAX_HP,因为战士和法师的MAX_HP不同,所以我似乎还必须在每个类中声明sleep(),而不是在父类中仅声明一次-效率低下。有没有一种方法可以在父类中声明sleep方法并从子类中检索MAX_HP?还是有更好的方法Java 是否可以将此方法放在父类中?,java,return,arguments,polymorphism,parent-child,Java,Return,Arguments,Polymorphism,Parent Child,我有一个方法sleep(),它将实例的int hp设置为final int MAX_hp。我把这个方法放在战士和法师类中,它们是角色的子类。这里的问题是,我在每个子类中分别定义MAX_HP,因为战士和法师的MAX_HP不同,所以我似乎还必须在每个类中声明sleep(),而不是在父类中仅声明一次-效率低下。有没有一种方法可以在父类中声明sleep方法并从子类中检索MAX_HP?还是有更好的方法 //Warrior Class public class Warrior extends Adventu
//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;
}
是的,你可以
在抽象类中添加一个抽象方法:
public abstract int getChildHP();
并让Warrior
和Mage
执行它:
public int getChildHP() { return MAX_HP };
public void sleep() {
setHp(getChildHP());
System.out.println(getName() + "fully restored HP!");
}
(MAX_HP
当然对每一个都是不同的)
将sleep()
方法(从子类中删除)移动到抽象类并实现它:
public int getChildHP() { return MAX_HP };
public void sleep() {
setHp(getChildHP());
System.out.println(getName() + "fully restored HP!");
}
调用此方法时,将根据实例调用相关的getChildHP()。
现在sleep()
在父类中只存在一次==>没有代码重复
希望能有帮助