adept7771
@adept7771
кратко

Newbie! Джава классы и объекты, правильная компановка классов и вызов

Недавно начал изучать ООП и Java. Пак нубовопросов :)

У нас есть класс Main в котором обрабатывается основная программа, и два под-класса Player / Location

Player класс хранит информацию скажем об игроках и их характеристиках. Как я правильно понял сначала мы для класса задаем переменные и дефолтные значения к ним.

Player.java
public class Player {
    public String characterName = "N/A";
    public String characterClass = "Paladin";
    public String characterSex = "Man";
    public int characterPlayedTime = 0;
    public int characterLevel = 1;
    public int characterDamage = 100;
}


Это мы создали класс Игрок с такими-то значениями.

Теперь я хочу сделать в данном Классе объект - определенного игрока. Как мне это правильно реализовать?

Будет ли правильно внутри класса Player написать нечто следующее:

public class Player {

    public String characterName = "N/A";
    public String characterClass = "Paladin";
    public String characterSex = "Man";
    public int characterPlayedTime = 0;
    public int characterLevel = 1;
   public int characterDamage = 100;

    public Player adept = new Player {
        public String characterName = "Adept";
        public String characterClass = "Rogue";
        public String characterSex = "Man";
        public int characterPlayedTime = 15;
        public int characterLevel = 30;
        public int characterDamage = 500;

    }

}


Для меня важно понять эти основы. Так как с ООП раньше связан не был. Спасибо!
  • Вопрос задан
  • 2437 просмотров
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Я думаю вам бы сначала разобраться с такими штуками как инкапсуляция
Ответ написан
svd71
@svd71
Иногда требуется создавать объект определенного класса с предустановленными значениями, либо возвращать какойто (я их называю глобальными) ранее созданный объект.
Первая возможность реализуеся в конструкторе класса:
public class Player {

    public String characterName = "N/A";
    public String characterClass = "Paladin";
    public String characterSex = "Man";
    public int characterPlayedTime = 0;
    public int characterLevel = 1;
   public int characterDamage = 100;

    public Player () {
        characterName = "Adept";
        characterClass = "Rogue";
        characterSex = "Man";
        characterPlayedTime = 15;
        characterLevel = 30;
        characterDamage = 500;
    }

}
... создаст в каждом созданном новом объекте ранее записанные в конструкторе значения. После создания их можно изменить на другие.

Для второго случая:
public class Player {

    public String characterName = "N/A";
    public String characterClass = "Paladin";
    public String characterSex = "Man";
    public int characterPlayedTime = 0;
    public int characterLevel = 1;
   public int characterDamage = 100;

    public static Player adept() {
        Player ret = new Player();
        ret.characterName = "Adept";
        ret.characterClass = "Rogue";
        ret.characterSex = "Man";
        ret.characterPlayedTime = 15;
        ret.characterLevel = 30;
        ret.characterDamage = 500;
     return ret;
    }
}
... статическая функция вернет созданный в ней объект, предварительно присвоив необходимые значения в поля объекта. Их так же можно изменить.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы