如何编写包含布尔值的构造函数?

这是一个愚蠢的问题,但是自从我使用java以来​​已经有很长一段时间……我如何用布尔值编写构造函数,或者我应该编写一个默认构造函数? 我最近一直在使用C ++,而且我忘记了很多java的语法。

这是我到目前为止:

public class Creature { protected int terrain; public static final int DESERT = 0; public static final int MOUNTAIN = 1; public static final int FOREST = 2; //symbols on cards boolean flyingCreature = false; boolean magicCreature = false; boolean canCharge = false; boolean rangedCombat false; public int specialAbility = 0; public Creature(int startTerrain, boolean flying, boolean magic, boolean charge, boolean ranged, int special){ ? } } 

当我进行搜索时,我似乎无法找到任何内容…如何在构造函数中初始化每个值? 或者我应该拥有

 public Creature(){ startTerrain = DESERT; flyingCreature = false; magicCreature = false; canCharge = false; specialAbility = 0; } ? 

我也有几个inheritance自这个的类,所以我不确定这是否有所不同。

布尔参数与任何其他类型一样。

所以,就像这样。

 public Creature(int startTerrain, boolean flying, boolean magic, boolean charge, boolean ranged, int special){ terrain = startTerrain; flyingCreature = flying; magicCreature = magic; canCharge = charge; rangedCombat = ranged; specialAbility = special; } 

如果这些参数在开始时总是相同的,那么你可以在默认构造函数上设置它们,如你所说。

因为,你有inheritance这个的类,它们的构造函数必须调用super() ,它调用父类构造函数。 如果在没有任何参数的情况下调用它,将调用Creature的基本构造函数。

如果你使用具有参数的构造函数,它就像这样

 this.flyingCreature = flying; this.magicCreature = magic; 

等等。

如果你使用没有任何参数的构造函数(默认构造函数),那么你需要将类字段设置为一些常量(就像你做的那样)。 所以你这样做

 this.flyingCreature = false; this.magicCreature = false; 

等等。

使用this. 除非您有一个具有相同名称的参数,否则不是必需的,在这种情况下您应该使用this. 否则您的初始化代码将对类字段没有影响。

你可能在你的例子中适当地选择了原始类型boolean但是因为你提到了带有大写“B”的“Boolean”,所以存在差异。 布尔变量是可空的,与具有小写“b”的基元“boolean”不同。 如果你使用过布尔,你可以简单地初始化那些

 Boolean boolVar = Boolean.TRUE; //or Boolean.FALSE 

之后他们可能会根据情况要求进行空检查。