Java 如何调用使用子类';什么是覆盖的最终变量?
我第一节课的相关代码:Java 如何调用使用子类';什么是覆盖的最终变量?,java,Java,我第一节课的相关代码: 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; }
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,同时保持两个变量为最终值?将定义更改为
受保护的浮子最大健康度=100.0f
并在子类中重写。这样,您仍然可以使用具有不同MAX_HEALTH值的方法 如其他人评论中所述,考虑改变设计(如果你能控制它的话)。否则,您可以使用反射访问字段并更改其值,如:
Field field = myParentclass.getDeclaredField("MAX_HEALTH");
field.setAccessible(true);
field.setFloat(yourInstance, 500.0f);
这对字段不起作用。为此使用并重写(受保护的)方法。@f1sh我在第二个类中考虑过重写方法,但这意味着复制粘贴整个方法,而且肯定有更好的方法way@Aominè你是对的,我想的是受保护的。很晚了:(这里有一个
final
关键字,你知道它是什么意思吗?@karakfa这是我问题的一部分,如果我处理的是正态变量,我就不会有问题了。