Почему метод repair не работает?

Ожидается, что метод repair изменит параметр isReadyToDrive экземпляра yamaha на true, но это не выполняется.

package ua.com.foxminded.carmanager;                                                                                                                                                                                                                                                                            
                                                                                                                                                                                                                                                                                                                    
public class CarManager {                                                                                                                                                                                                                                                                                       
    public static void main (String[] args) {                                                                                                                                                                                                                                                                
        Motorcycle suzuki = new Motorcycle(
            "Suzuki GSX-R1000", 2021, 16000, 600, Color.BLACK, TypeOfEngine.DIESEL, true
        );
                                                                                                                                                                                                                                                                                                                    
        Motorcycle yamaha = new Motorcycle(
            "Yamaha  FZ1", 2007, 9000, 700, Color.GREEN, TypeOfEngine.GAS, false
        );

        suzuki.addDistance(1000);                                                                                                                                                                                                                                                                        
        suzuki.addDistance(2000);                                                                                                                                                                                                                                                                        
        yamaha.repair(true);                                                                                                                                                                                                                                                                             
        System.out.println(suzuki);                                                                                                                                                                                                                                                                      
        System.out.println(yamaha);                                                                                                                                                                                                                                                                      
        System.out.println(suzuki.equals(yamaha));                                                                                                                                                                                                                                                       
    }
}
package ua.com.foxminded.carmanager;
    
import java.util.Objects;
    
public class Motorcycle {
    String name;
    int yearOfProduction;
    int price;
    int weight;
    Color color;
    TypeOfEngine engineType;
    boolean isReadyToDrive;
    private int distance = 0;
    
    public Motorcycle (String name, int yearOfProduction, int price, int weight, Color color, TypeOfEngine engineType, boolean isReadyToDrive) {
        this.name = name;
        this.yearOfProduction = yearOfProduction;
        this.price = price;
        this.weight = weight;
        this.color = color;
        this.engineType = engineType;
        this.isReadyToDrive = isReadyToDrive;
    }
    
    public void repair (boolean isReadyToDrive) {
        isReadyToDrive = true;
    }

    public boolean isReadyToDrive() {
        return isReadyToDrive;
    }
    
    public void addDistance(int additionalDistance) {
        distance +=additionalDistance;
    }
    
    public int getDistance() {
        return distance;
    }
    
    @Override
    public String toString() {
        return "Motorcycle{" +
                "name='" + name + '\'' +
                ", yearOfProduction=" + yearOfProduction +
                ", price=" + price +
                ", weight=" + weight +
                ", color=" + color +
                ", engineType=" + engineType +
                ", isReadyToDrive=" + isReadyToDrive +
                ", distance=" + distance +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof Motorcycle)) return false;
        Motorcycle that = (Motorcycle) o;
        return isReadyToDrive == that.isReadyToDrive &&
                name.equals(that.name) &&
                color == that.color;
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, color, isReadyToDrive);
    }
}

Ответы (2 шт):

Автор решения: стасевич

метод меняет значение переменой переданной в метод, т.е. происходит перекрытие поля обьекта локальной переменной в методе(т.к. у локальной переменной приоритет выше) . именно поэтому в конструкторе применяется ключевое слово this

есть 2 варианта. изменить имя принимаемого параметра

public void repair (boolean isReady){
                  isReadyToDrive = true;

явно указать на поле класса словом this

 public void repair(boolean isReadyToDrive) {
        this.isReadyToDrive = true;
→ Ссылка
Автор решения: Дима Васильев

Что-то очень интересное написано в вашем коде, либо я не ничего не понял. Но если правильно понял, то так:

public void repair (boolean isReadyToDrive){
    this.isReadyToDrive = true;
}

И метод isReadyToDrive() аналогично.

→ Ссылка