我在
java中编程游戏,作为问题标题的建议,我正在使用我的课程中的公共场. (暂且)
从我看到的公共领域是坏的,我有一些了解为什么. (但如果有人可以澄清为什么不应该使用它们,那将不胜感激)
事情是从我所看到的(也就是合乎逻辑的),使用私有领域,但是使用getter和setter来访问它们也不是很好,因为它首先消除了使用私有字段的点.
所以,我的问题是,什么是替代品?或者我真的需要使用私人领域与getter和setter?
这里提供的是我的一个类,其中一些方法.
如果需要,我会详细说明一下.
public double health;
//The player's fields.
public String name;
public double goldCount;
public double maxWeight;
public double currentWeight;
public double maxBackPckSlts;
public double usedBackPckSlts; // The current back pack slots in use
public double maxHealth; // Maximum amount of health
public ArrayList backPack = new ArrayList();
//This method happens when ever the player dynamically takes damage(i.e. when it is not scripted for the player to take damage.
//Parameters will be added to make it dynamic so the player can take any spread of damage.
public void beDamaged(double damage)
{
this.health -= damage;
if (this.health < 0)
{
this.health = 0;
}
}
编辑:为了检查的目的,这是我的武器类现在看起来(代码示例不工作的原因,所以它看起来不正确.)
private final double DAMAGE;
private final double SPEED;
public Weapon(double initialDmg,double initialSpd,String startName,double initialWg)
{
DAMAGE = initialDmg;
SPEED = initialSpd;
setItemName(startName);
setItemWeight(initialWg);
}
public double getSpeed()
{
return SPEED;
}
public double getDamage()
{
return DAMAGE;
}
正如你所看到的,由于武器的伤害和速度不需要改变,他们可以是最终的. (如果在游戏后期,我决定这些值可以“升级”,所以我可以添加setter然后验证,或者只是用升级的值创建一个新的武器)他们被设置在武器的构造函数中.
结论:吸气器和定位器是好的,只要它们被巧妙地使用,并且只在需要时使用. (然而)