2014-04-21 4 views
-2

Я попросил переопределить метод для реализации новых поведений, я создал конструктор и метод.Переопределить метод

private String name; 
private boolean disease; 

public Area(Position pos, String name, boolean disease) { 
    super(pos); 

    this.name = name; 
    this.disease = disease; 
} 

public String getName() { 
    return name; 
} 

и метод, который я должен переопределить так, что болезнь может быть остановлена ​​на площадь, если лекарство достаточно

public boolean hasDisease() { 
    return disease; 
} 

Я попытался с помощью

if (medicine = true) { 
     disease = false 
    } 
    return disease = true; 
} 

но что причина других тестов на потерпеть неудачу.

+4

Сравнение: '=='. Назначение: '='. –

ответ

5

Вы использовали = вместо == для проверки на равенство.

if(medicine == true) { // <-- Fixed this. 
    disease = false 
} 
    return disease = true; 
} 

Вы можете исправить это еще больше:

if(medicine) 
    disease = false 
return disease; 
0

добавить к ответу выше

= является оператором присваивания, так говоря

ИНТ а = Ь;

a будет принимать значение b.

где как == - оператор сравнения.

поэтому a == b - это вызов функции, который возвращает логический результат true, если a и b имеют одинаковое значение и false, если они этого не делают. Для базовых типов, таких как int, double, Boolean, float и т. Д., Он будет сравнивать значение, поскольку сложные типы, такие как экземпляр какого-либо объекта (на большинстве языков), будут сравнивать места расположения переменных. Другими словами

String s = "This is True"; 
if(s == "This is True"){ 
    return true; 
} 
return false; 

никогда не вернутся так, потому что s и «Это правда» не находятся в том же месте в памяти. Для этого вам необходимо использовать

if(s.equals("This is True"){ 
    return true; 
} 
return false; 
Смежные вопросы