Soit le code suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Vehicle {
    public void printSound() {
        System.out.print("vehicle");
    }
}
 
class Car extends Vehicle {
    public void printSound() {
        System.out.print("car");
    }
}
 
class Bike extends Vehicle {
    public void printSound() {
        System.out.print("bike");
    }
}
 
public class Main {
    public static void main(String[] args) {
        Vehicle v = new Car();
        Car c = (Car) v;
 
        v.printSound();
        c.printSound();
    }   
}
Qu'affichera ce code?

D'apres moi, ce code devra afficher vehiculecar,
D'apres la solution, ce code affichera carcar.

Je ne comprends pas pourquoi. A ce que je sache, même si on instancie la classe mère en appelant le constructeur de la classe fille, on devra pourtant accéder aux methodes de la mère non?

Il y a quelque chose que je dois mal comprendre