我不是很擅长英语,但我会试着解释一下我想要做什么 所以我在这里有这个类构造函数:
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);
}
所以现在Vulcan
类将被添加到gods
ArrayList中,对吧?如果我错了,请纠正我
好吧,当我打印列表gods
时,我得到一个空的ArrayList
我做错什么了吗?或者我是否必须定义类Vulcan, Loki and Athena
?我很困惑,请帮忙。
答案 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());
}
}
答案 1 :(得分:1)
将约翰,列维和迈克尔作为人类的一个实例是很有意义的。
Human john = new Human( "John", 23 );
Human levi = new Human( "Levi", 24 );
Human michael = new Human( "Michael", 25 );
答案 2 :(得分:-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);
}
}