Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重置数据成员是否算作重复代码?_Java_Inheritance_Datamember - Fatal编程技术网

Java 重置数据成员是否算作重复代码?

Java 重置数据成员是否算作重复代码?,java,inheritance,datamember,Java,Inheritance,Datamember,我对编程和Java相当陌生。我目前正在用一个飞船对象构建一个游戏。它具有以下数据成员: int START_M_ENERGY = 21; int START_C_ENERGY = 1; int STARTING_HEALTH = 5; int maximalEnergyLevel = STARTING_MAX_ENERGY; int currentEnergyLevel = STARTING_CURRENT_ENERGY; 该代码还有一个“死亡”方法。当这些数据成员在游戏中发生变化时,此方法基

我对编程和Java相当陌生。我目前正在用一个飞船对象构建一个游戏。它具有以下数据成员:

int START_M_ENERGY = 21;
int START_C_ENERGY = 1;
int STARTING_HEALTH = 5;
int maximalEnergyLevel = STARTING_MAX_ENERGY;
int currentEnergyLevel = STARTING_CURRENT_ENERGY;
该代码还有一个“死亡”方法。当这些数据成员在游戏中发生变化时,此方法基本上会将它们重置回其原始值。该方法基本上与上面的代码完全相同。 那么,这是否被视为“重复代码”?有办法避免吗?我们还不允许使用抽象类或其他东西,不确定它是否相关,但我已经看到主题弹出。重要的是要注意,SpaceShip类没有构造函数,因为我认为将它们初始化为成员是有意义的。死后调用构造函数有意义吗?我不希望这个物体在死后被替换,只想重新设置!
谢谢

< p>重置值是好的,除非在其他地方给这些成员分配相同的值,否则我不认为它是重复代码。如果你想在死后保留同一个对象,不要调用构造函数。< /P> < P>重置值是好的,除非你在其他地方给这些成员分配相同的值,否则我不会考虑重复代码。如果希望在对象死后保留相同的对象,请不要调用构造函数

我认为将这些初始化为成员是有意义的

这可能有道理,但还有更好的想法

仍然可以不带参数重写构造函数。然后你可以在里面调用死亡方法

public SpaceShip() {
    death();
}

death() {
    this.maximalEnergyLevel = STARTING_MAX_ENERGY; //or use setter
    this.currentEnergyLevel = STARTING_CURRENT_ENERGY; //or use setter
}
我猜START_M_ENERGY和其他大写变量是常量,如果是真的-将它们标记为static final,如果不是-添加到death方法并使用camelCase。然后您可以考虑更改方法名以重置。< /P> 我认为将这些初始化为成员是有意义的

这可能有道理,但还有更好的想法

仍然可以不带参数重写构造函数。然后你可以在里面调用死亡方法

public SpaceShip() {
    death();
}

death() {
    this.maximalEnergyLevel = STARTING_MAX_ENERGY; //or use setter
    this.currentEnergyLevel = STARTING_CURRENT_ENERGY; //or use setter
}
我猜START_M_ENERGY和其他大写变量是常量,如果是真的-将它们标记为static final,如果不是-添加到death方法并使用camelCase。然后您可以考虑更改方法名以重置。< /P>