Нет, ваш класс Mountainbike
не должен переопределять переменную speed
. Вам нужно передать начальную скорость (10
) конструктору его суперкласса, используя super
как часть вызова конструктора:
package java1;
class Bicycle
{
Bicycle(int speed, int gear)
{
this.speed = speed;
this.gear = gear;
}
public void accelerate(int incr)
{
speed = speed + incr;
}
public void decelerate(int incr)
{
speed = speed - incr;
}
void changeGear(int val)
{
gear = val;
}
public String toString()
{
return "Speed: " + speed + " Gear: " + gear;
}
private int speed = 0;
private int gear = 1;
}
class Mountainbike extends Bicycle
{
public Mountainbike()
{
super(10, 1);
}
}
public class Main {
public static void main(String[] args)
{
Mountainbike mb1 = new Mountainbike();
mb1.accelerate(20);
mb1.accelerate(10);
System.out.println(mb1);
}
}
Я бы рекомендовал не использовать protected
переменные для скорости и снаряжения. Рекомендуется применять инкапсуляцию, объявив переменные speed
и gear
private
в базовом классе.
EDIT:
Очевидно, вы начинаете с программирования на Java. Я предлагаю вам взглянуть на эту бесплатную онлайн-книгу, написанную Брюсом Экелем: Мышление на Java .