2016-11-28 4 views
0

Я хочу, в пределах моего текста class, определить два конструктора.несколько конструкторов и если выписка

При создании нового экземпляра 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; 
    } 

} 

Это домашнее задание, поэтому я не хочу отвечать сам по себе, но имеет ли смысл этот код?

Например, если я добавляю новый аварийный автомобиль, я хочу оператор if в зависимости от того, какой цвет я добавляю.

+2

где ваш класс EmergencyVehicle? Отправьте его здесь – developer

+0

Ну, на самом деле это не имеет смысла, хотя ваше намерение, вероятно, было ясным ... http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java –

+1

Вместо строки возможно вы можете использовать предопределенный тип цвета? https://docs.oracle.com/javase/7/docs/api/java/awt/Color.html – HRgiger

ответ

4

первое замечание

Не называйте

this("red"); 

в конструктор по умолчанию, сделайте

colour = "red"; 

если конструктор EmergencyVehicle(String colour) RoadVehicle(String colour) не делает что-то еще.

второе замечание

Не сравнить с использованием

if (colour == "red") 

Используйте

if ("red".equals(colour)) 

3rd замечанием

Метод

public String toString() 

Предполагается вернуть строковое представление экземпляра. Вы осуществляете только возврат red или no, который не очень информативен. Используйте что-то вроде

return("FireEngine(colour=" + colour + ")"); 
+0

Что не так с 'this (" red ")'? Возможно, супер-вызов правильно делает 'color =" red "' –

+0

@ cricket_007 Наверное, нет. Обратите внимание на 'private String color;'. –

+2

Но тогда не было бы необходимости в 'private String color;' – Grunzwanzling

 Смежные вопросы

  • Нет связанных вопросов^_^