0

我想在我的 abstractclass中定义两个构造函数。

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

火机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 语句,具体取决于我添加的车辆是什么颜色。

4

1 回答 1

4

第一条评论

不要打电话

this("red");

在默认构造函数中,执行

colour = "red";

除非构造函数正在做其他事情。EmergencyVehicle(String colour) RoadVehicle(String colour)

第二条评论

不要比较使用

if (colour == "red")

利用

if ("red".equals(colour))

第三条评论

方法

public String toString()

应该返回实例的字符串表示。您的实现仅返回redno提供的信息不是很多。使用类似的东西

return("FireEngine(colour=" + colour + ")");
于 2016-11-28T11:37:39.847 回答