2016-11-28 86 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