我的第一堂课的相关代码:
protected static final float MAX_HEALTH = 100.0f;
protected static final float MIN_HEALTH = 0.0f;
public void modifyHealth(float enteredAmount)
{
if (health + enteredAmount > MAX_HEALTH )
{
health = MAX_HEALTH;
}
else if (health + enteredAmount < MIN_HEALTH)
{
health = MIN_HEALTH;
}
else
{
health += enteredAmount;
}
}
扩展第一堂课的第二课:
private final float MAX_HEALTH = 500.0f;
当我在第二个类上调用modifyHealth方法时,我希望运行状况能够增加到100以上,但是目前它仍然使用父类的最终变量值。我怎样才能使健康可以增加到500,同时保持变量最终?
答案 0 :(得分:0)
将定义更改为 protected float MAX_HEALTH = 100.0f;
并在子类中重写。这样你仍然可以使用具有不同MAX_HEALTH值的方法。
答案 1 :(得分:0)
正如其他人的评论所述,考虑改变设计(如果你控制它)。否则,您可以使用Reflection访问该字段并更改其值,如:
Field field = myParentclass.getDeclaredField("MAX_HEALTH");
field.setAccessible(true);
field.setFloat(yourInstance, 500.0f);