Aquí il est dit que :
MountainBike dispose ainsi des mêmes champs et méthodes que Bicycle, tout en permettant à son code de se concentrer exclusivement sur les caractéristiques qui le rendent unique. Cela rend le code de vos sous-classes facile à lire. Cependant, vous devez veiller à documenter correctement l'état et le comportement que chaque superclasse définit, car ce code n'apparaîtra pas dans le fichier source de chaque sous-classe.
Cependant, dans mon code, l'héritage ne fonctionne pas correctement, probablement à cause d'une faille dans mon code ?
package java1;
class bicycle {
int speed = 0;
int gear = 1;
void accelerate(int incr) {
speed = speed + incr;
}
void decelerate(int incr) {
speed = speed - incr;
}
void changeGear(int val) {
gear = val;
}
void printInfo() {
System.out.println("Speed: " + speed + " Gear: " + gear);
}
}
class mountainbike extends bicycle {
int speed = 10;
}
public class Main {
public static void main(String[] args) {
mountainbike mb1 = new mountainbike();
mb1.accelerate(20);
mb1.accelerate(10);
mb1.printInfo();
}
}
La classe mountainbike devrait hériter de toutes les caractéristiques de la classe bicycle, non ? J'ai ajouté une propriété unique qui est int speed = 10
La vitesse de départ devrait donc être de 10. Cependant, lors de l'exécution, le compilateur considère que la vitesse de départ est de 0.
Des idées ?