У меня во время компиляции игнорируется одна строчка: 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;
}
}