Спасибо за ваши мысли.

граммирую игру на Java, и в качестве подсказки для названия вопроса я использую открытые поля в своих классах. (на данный момент)

Из того, что я видел, публичные поля плохие, и я понимаю, почему. (но если кто-то может уточнить, почему вы не должны их использовать, это будет оценено)

Дело в том, что также из того, что я видел (и это кажется логичным), является то, что использование закрытых полей, но использование методов получения и установки для доступа к ним также не очень хорошо, поскольку в первую очередь это лишает смысла использование закрытых полей.

Итак, мой вопрос, каковы альтернативы? или мне действительно нужно использовать приватные поля с геттерами и сеттерами?

Для справки вот один из моих классов и некоторые его методы.

Я уточню больше, если это будет необходимо.

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<String> backPack = new ArrayList<String>();

//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;
    }
}

РЕДАКТИРОВАТЬ: Для проверки, это то, что мойWeapon Класс выглядит следующим образом: (Пример кода по какой-то причине не работает, поэтому выглядит неправильно.)

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;
}

Как вы можете видеть, какWeapon's DAMAGE а такжеSPEED не нужно менять, они могут быть окончательными на данный момент. (если позже в игре я решил, что эти значения можно «обновить», так сказать, я могу добавить сеттеры затем с проверкой или просто создать новое оружие с обновленными значениями). Они устанавливаются вWeapon's конструктор.

Вывод: геттеры и сеттеры в порядке, если они используются разумно, и используются только при необходимости. (тем не мение)

Ответы на вопрос(0)

Ваш ответ на вопрос