2015-11-03 6 views
1

Я не очень хорошо разбираюсь в английском, но я попытаюсь объяснить, что я пытаюсь сделать.
Так что у меня этот конструктор класса здесь:Добавление Java Class Constructor в ArrayList (extends)

public class God { 

public static ArrayList<God> gods = new ArrayList<God>(); 

private String name; 
private PowerType powerType; 
private AttackType attackType; 
private ArrayList<ItemStack> abilities; 
private Pantheon pantheon; 
private GodClass godClass; 
private List<Pro> pros; 
private int favorCost; 
private int gemCost; 

public enum Pro { 
    HIGH_SINGLE_TARGET_DAMAGE, HIGH_MOBILITY, HIGH_AREA_DAMAGE, HIGH_CROWD_CONTROL, HIGH_DEFENSE, HIGH_SUSTAIN, PUSHER, HIGH_ATTACK_SPEED, HIGH_MOVEMENT_SPEED, GREAT_JUNGLER, MEDIUM_CROWD_CONTROL, 
} 

public enum GodClass { 
    ASSASSIN, GUARDIAN, HUNTER, MAGE, WARRIOR 
} 

public enum Pantheon { 
    CHINESE, EGYPTIAN, GREEK, HINDU, MAYAN, NORSE, ROMAN 
} 

public enum PowerType { 
    PHYSICAL, MAGICAL 
} 

public enum AttackType { 
    MELEE, RANGED 
} 

private int health; 
private int mana; 
private int speed; 
private int range; 
private double attackSpeed; 
private int damage; 
private int physicalProtection; 
private int magicalProtection; 
private int hp5; 
private int mp5; 

public God(String name, PowerType powerType, AttackType attackType, 
     ArrayList<ItemStack> abilities, Pantheon pantheon, 
     GodClass godClass, List<Pro> pros, int favorCost, int gemCost, 
     int health, int mana, int speed, int range, double attackSpeed, 
     int damage, int physicalProtection, int magicalProtection, int hp5, 
     int mp5) { 
    this.name = name; 
    this.powerType = powerType; 
    this.attackType = attackType; 
    this.abilities = abilities; 
    this.pantheon = pantheon; 
    this.godClass = godClass; 
    this.pros = pros; 
    this.favorCost = favorCost; 
    this.gemCost = gemCost; 
    this.health = health; 
    this.mana = mana; 
    this.speed = speed; 
    this.range = range; 
    this.attackSpeed = attackSpeed; 
    this.damage = damage; 
    this.physicalProtection = physicalProtection; 
    this.magicalProtection = magicalProtection; 
    this.hp5 = hp5; 
    this.mp5 = mp5; 
    gods.add(this); 
} 

Это нормально сейчас, верно? Если нет, поправьте меня, пожалуйста ...
Итак, давайте предположим, что это нормально, я создал несколько классов, расширяющих конструктор God, которые являются Vulcan, Loki and Athena

public class Vulcan extends God { 

private Vulcan(String name, PowerType powerType, AttackType attackType, 
     ArrayList<ItemStack> abilities, Pantheon pantheon, 
     GodClass godClass, ArrayList<Pro> pros, int favorCost, int gemCost, 
     int health, int mana, int speed, int range, double attackSpeed, 
     int damage, int physicalProtection, int magicalProtection, int hp5, 
     int mp5) { 
    super("VULCAN", PowerType.MAGICAL, AttackType.RANGED, abilities, 
      Pantheon.ROMAN, GodClass.MAGE, Arrays.asList(
        Pro.HIGH_AREA_DAMAGE, Pro.PUSHER), 5500, 200, 380, 245, 
      360, 55, 0.9, 34, 13, 30, 7, 5); 
} 

Так что теперь класса будут добавлен к gods ArrayList, не так ли? поправьте меня если я ошибаюсь.
Итак, когда я печатаю список gods, я получаю пустой ArrayList.
Я сделал что-то не так? Или мне нужно определить классы Vulcan, Loki and Athena? Я действительно смущен, помогите пожалуйста.

+0

Ваш код скомпилирован? –

+0

@JawadLeWywadi Хорошо, опубликовал реальный код. – PepsiGam3r

+0

Проверьте ответы ниже. У вас должен быть только один класс. –

ответ

3

Когда вы говорите John, Michael and Levi, мне кажется, что они должны быть экземпляром класса Human, а не совсем разными классами.

Возможно, вам нужно что-то вроде этого, но не уверен:

public Human { 
    public static ArrayList<Human> humans = new ArrayList<Human>(); 

    private String name; 
    private int old; 

    public Human(String name, int old) { 
     this.name = name; 
     this.old = old; 
     humans.add(this); 
    } 

    public static void main(String args[]) 
    { 
     Human john = new Human("John", 21); 
     Human michael = new Human("Michael", 31); 
     Human levi = new Human("Levi", 41); 

     System.out.println(Human.humans.size()); 
    } 
} 
+0

О, имеет смысл! Спасибо Хабиби. – PepsiGam3r

1

Было бы много смысла иметь Джона, Леви и Майкла, как пример человеческого класса.

Human john = new Human("John", 23); 
Human levi = new Human("Levi", 24); 
Human michael = new Human("Michael", 25); 
-1

Этот код можно использовать для передачи значений в супер конструктор класса, используя super() заявление class John.

class John extends Human { 

public John(String name, int old) { 
    super(name, old); 
} 

public static void main(String[] args) { 
    new John("John", 23); 
    new John("Michael", 31); 
    new John("Levi", 41); 

} 
}