gpt4 book ai didi

java - 如何继承静态字段并更改它的值?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:45:10 24 4
gpt4 key购买 nike

我正在开发程序/游戏,其中我有带参数的静态实用程序类。

class ParamsGeneral {
public static final int H_FACTOR = 100;
public static int MAX_SCORE = 1000;
...
}

然后我需要在某些特定情况下覆盖此值,例如在分数有限的 map 上玩游戏。所以我做了以下操作:

class ParamsLimited extends ParamsGeneral {
public static int MAX_SCORE = 500;
// other params stay same
}

预期用途如下:

class Player {
ParamsGeneral par;
public Player() {
if(onLimitedMap()){
par = new ParamLimited();
}
}

public boolean isWinner() {
if(this.score == par.MAX_SCORE) {
return true;
}
return false;
}
}

我还没有实际测试过这段代码,因为 IDE 提示通过实例调用静态字段以及字段隐藏。我清楚地看到这段代码很糟糕,那么有没有办法实现这个或者我必须单独编写每个参数类?

PS:我知道我应该使默认类抽象并使用 getter,我只是好奇是否有办法使这些值可以静态访问。

最佳答案

您不能覆盖静态成员 - 在 Java 中,方法和字段都不能被覆盖。但是,在这种情况下,您似乎不需要执行任何操作:因为您在 par 变量中有一个 ParamsGeneral 的实例,所以非静态方法将使用常规覆盖执行您需要的操作。

class ParamsGeneral {
public int getMaxScore() {
return 1000;
}
}
class ParamsLimited extends ParamsGeneral {
@Override public int getMaxScore() {
return 500;
}
}

...

public boolean isWinner() {
// You do not need an "if" statement, because
// the == operator already gives you a boolean:
return this.score == par.getMaxScore();
}

关于java - 如何继承静态字段并更改它的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16202884/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com