У меня во время компиляции игнорируется одна строчка: myCar.drive(); Все остальное выводится, а та строчка не выводится. Ошибок никаких не выдает

// 1ый класс
public class JamesBondCar extends  Car{
    int distance;
    public int drive(int howLong){
        distance = howLong*180;
        return distance;
    }
}

// 2ой класс
public class CarOwner{
    public static void main(String args[]){
        JamesBondCar myCar = new JamesBondCar();
        myCar.start();
        myCar.stop();
        myCar.drive(3);
    }
}

// 3ий класс
public class Car {
    int distance;
    public void start(){
      System.out.println("Вы начали движение");
    }
    
    public void stop(){
      System.out.println("Вы остановились");
    }

    public int drive(int howLong){
        distance = howLong*60;
        System.out.println("Я еду уже " + howLong + " минут");
        System.out.println("Я проехал " + distance + " метров");
        return distance;
    }
}

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

Автор решения: Komdosh

Вы переопределили метод drive в классе JamesBondCar.

В этой реализации у вас отсуствует вывод (System.out.println). Вы просто меняете значение distance.

   public int drive(int howLong){
        distance = howLong*180;
        return distance;
    }
→ Ссылка
Автор решения: Anton Shchyrov

У вас вывод реализован к классе Car. В классе JamesBondCar вы переопределяете метод drive(). Но из переопределенного метода вы не вызываете родительский метод. Поэтому никакого вывода и не происходит.

Кроме того, вы зачем-то дважды определяете поле distance. Смысл этого поля мне не понятен.

Я бы определил метод speed(), а метод drive() не переопределял бы вообще.

public class Car {
    protected int speed() {
      return 60;
    }

    public void start(){
      System.out.println("Вы начали движение");
    }
    
    public void stop(){
      System.out.println("Вы остановились");
    }

    public int drive(int howLong){
        int distance = howLong * speed();
        System.out.println("Я еду уже " + howLong + " минут");
        System.out.println("Я проехал " + distance + " метров");
        return distance;
    }
}

public class JamesBondCar extends Car{
    @Override
    protected int speed() {
        return 180;
    }
}
→ Ссылка