多个构造函数和if语句

时间:2016-11-28 11:35:16

标签: java constructor-chaining

我希望在我的抽象class中定义两个构造函数。

当创建class的新实例时,我希望toString根据所调用的内容返回不同的内容:

FireEngine Class

public class FireEngine extends EmergencyVehicle {  

    private String colour;

    public FireEngine(String colour) {
        super (colour);

    }
    public FireEngine() {
        this("red");

    }

    public String toString () {
        if (colour == "red") {
            return "red";
    }   else
        return "no";
    }
}

EmergencyVehicle类:

public abstract class  EmergencyVehicle extends RoadVehicle {

    public boolean codeBlue = false;

    public EmergencyVehicle(String colour){
        super(colour);
    }

    public boolean isEmergency () {
        if (codeBlue == true) {
            return true;
        } else {
            return false;
        }
    }

    public void setEmergency(boolean newEmergency) {
        codeBlue = newEmergency;
    }

}

这是一项家庭作业练习,所以我本身并不想要答案,但上述代码是否有意义?

例如,如果我添加一个新的EmergencyVehicle,我想要一个if语句,具体取决于我添加的车辆的颜色。

1 个答案:

答案 0 :(得分:4)

第一个备注

不要打电话

this("red");

在默认构造函数中,执行

colour = "red";

除非 EmergencyVehicle(String colour) RoadVehicle(String colour)构造函数正在执行其他操作。

第二个备注

请勿使用

进行比较
if (colour == "red")

使用

if ("red".equals(colour))

第3版备注

方法

public String toString()

应该返回实例的字符串表示。您的实现仅返回redno,这不是非常有用的信息。使用像

这样的东西
return("FireEngine(colour=" + colour + ")");