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

时间:2014-01-13 23:04:57

标签: java constructor boolean

这是一个愚蠢的问题,但是自从我使用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;
} ?

我还有几个继承自这个的类,所以我不确定这是否有所不同。

3 个答案:

答案 0 :(得分:3)

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

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

等等。

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

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

等等。

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

答案 1 :(得分:1)

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

所以,就像这样。

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;
}  

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

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

答案 2 :(得分:1)

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

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

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