У меня есть супер-класс, определенный как это:Как определить эти существа в подклассах?
public class Creature {
Terrain terrain;
//symbols on cards
boolean flyingCreature;
boolean magicCreature;
boolean canCharge;
boolean rangedCombat;
public int specialAbility = 0;
public Creature(Terrain startTerrain, boolean flying, boolean magic, boolean charge, boolean ranged, int special){
terrain = startTerrain;
flyingCreature = flying;
magicCreature = magic;
canCharge = charge;
rangedCombat = ranged;
specialAbility = special;
}
}
И у меня есть подклассы, определенные следующим образом:
public class MountainCreature extends Creature{
public enum Creature{
GOBLINS, DWARVES, TROLL, GREATEAGLE, BROWNDRAGON,
MOUNTAINMEN, GIANTROC, GIANTCONDOR, CYCLOPS, GREATHAWK,
OGRE, BROWNKNIGHT, LITTLEROC, GIANT, MOUNTAINLION
}
public MountainCreature(int startTerrain, boolean flying, boolean magic, boolean charge, boolean ranged, int special){
super(startTerrain, flying, magic, charge, ranged, special);
}
}
У меня есть 15 различных MountainCreatures (они являются те, в моем перечислении), и они каждый из них имеет вариации всех характеристик в моем конструкторе. Как я могу определить каждое из своих Существ отдельно? Разве я не должен использовать перечисление здесь?
Я не уверен, чего вы хотите достичь. Вы хотите 15 различных объектов? Или 15 разных «видов» «MountainCreature», где вы можете создавать множество объектов каждого другого вида? Возможно, разместите образец кода, который будет использовать «MountainCreature», чтобы мы могли видеть, что вы пытаетесь сделать. – ajb
Я бы ожидал, что использование enum в конечном итоге создаст проблемы для вас. Вы начнете использовать инструкции if или switch, чтобы делать выбор в поведении для разных типов существ. Я бы исследовал наличие различных видов существ в качестве объектов, полученных из класса Существо. Это будет простой объектно-ориентированный подход. –
В любом случае, если вы определяете 'enum', не называйте его' Существо'. Теперь у вас есть имя «Существо» с двумя разными значениями, которое, вероятно, просто приведет к путанице или другим ошибкам. – ajb