java构造函数的默认参数

时间:2016-02-23 12:13:55

标签: java inheritance constructor polymorphism default

我在名为PlayableFighter的java类中使用此构造函数

public PlayableFighter(String name, int maxHealthPoints, int blastDamage, int physicalDamage,
        int maxKi, int maxStamina, ArrayList<SuperAttack> superAttacks, ArrayList<UltimateAttack>
        ultimateAttacks)

我想从一个名为Earthling的类中调用它继承PlayableFighter,但我没有superAttacks或ultimateAttacks的值,所以我想将它们设置为默认值,我使用null但有更好的方法吗?

public Earthling(){
super("Earthling",1250,50,50,4,4,null,null);
}

2 个答案:

答案 0 :(得分:1)

如果您可以管理PlayableFighter的代码,我建议添加另一个构造函数来获取除“superAttacks”和“ultimateAttacks”之外的所有参数,这些参数将使用默认参数调用其他构造函数,如下所示:

public PlayableFighter(String name, int maxHealthPoints, int blastDamage, int physicalDamage, int maxKi, int maxStamina){
this(name, maxHealthPoints, blastDamage, physicalDamage, maxKi, maxStamina, null, null);
}

答案 1 :(得分:0)

我不喜欢看到以这种方式抛出的零点。在创建对象时,对象应该100%准备就绪。

我这样做:

while l~=p
n=p-l;
t=t-n;
[dt,~]=history(con,s,f,t,T);
l=length(dt);
end

你并没有像你一样使用继承。我有一个public Earthling() { super("Earthling",1250,50,50,4,4,new ArrayList<SuperAttack>(), new ArrayList<UltimateAttack>()); } 接口,其中包含子类AttackUltimateAttack

你的命名很糟糕。谁能知道这两者之间的区别是什么?

为什么你必须通过&#34; Earthling&#34;标签到SuperAttack课程?更愚蠢。

你在默认构造函数中传递给超级构造函数的那些神奇数字是什么?更愚蠢。