2016-11-28 96 views
0

我想在我的摘要class中定义两个构造函数。多个构造函数和if语句

当创建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语句,具体取决于我添加的车辆的颜色。

+2

你的EmergencyVehicle类在哪里?在这里发布 – developer

+0

嗯,不是真的有道理,虽然你的意图可能很清楚... http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java –

+1

而不是字符串也许你可能想要使用预定义的Color类型? https://docs.oracle.com/javase/7/docs/api/java/awt/Color.html – HRgiger

回答

4

1注

不要叫

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 + ")"); 
+0

这个(“红”)有什么问题?也许超级电话会正确地做'color =“red”' –

+0

@ cricket_007可能不是。注意'私人字符串颜色;'。 – 2016-11-28 11:41:05

+2

但是,那么将不需要'私人字符串的颜色;' – Grunzwanzling