Как я могу создать конструктор подкласса GROUP, который должен вызвать супер конструктор N раз?
Вы не можете. И вам не нужно.
Каждый класс Java имеет ровно один суперкласс. И каждый объект класса имеет только одно состояние своего суперкласса.
К счастью, ваш класс группы не должен называть супер конструктор N раз. Либо группа является персонажем, либо нет. Если это персонаж, то один персонаж. Вы вызываете супер конструктор группы один раз.
Независимо от того, Группа содержит символов. Супер конструктор Солдата или Фермера вызывается из конструктора для Солдата или Фермера, а не из группы /, которые содержат символ.
Например, ваш класс Farmer может выглядеть следующим образом:
public class Farmer extends Character {
public Farmer(String id,Position p) {
super(id, p); // <-- Superclass constructor for one farmer.
...
}
...
}
И ваш класс Group может выглядеть следующим образом, если группа является Характер:
class Group extends Character {
private Collection<Character> m_members;
Group(String id,Position p, Collection<Character> members) {
super(id, p); // Superclass constructor for the *group*.
m_members = new ArrayList<>(members); // Defensive copy
}
}
Или это, если это не.
class Group {
Group(Collection<Character> members) {
m_members = new ArrayList<>(members); // Defensive copy
}
}
Вам не нужен подкласс для группировки объектов, вы можете использовать «Список». – Maroun
Проблема в том, что я должен сделать это таким образом. –