programmation Java (école d'ingénieur) · Chapitre 9 · Application directe du cours
L'ordre des constructeurs
Héritage et polymorphisme · niveau 1 (application)
Énoncé
Qu'affiche le programme suivant ? Justifier l'ordre des lignes.
public class Ex1Ordre {
public static void main(String[] args) {
Vehicule v = new Voiture("AB-123-CD", 5);
System.out.println(v.description());
}
}
class Vehicule {
protected String immat;
Vehicule(String immat) {
System.out.println("Vehicule(" + immat + ")");
this.immat = immat;
}
String description() { return "véhicule " + immat; }
}
class Voiture extends Vehicule {
private int places;
Voiture(String immat, int places) {
super(immat);
System.out.println("Voiture(" + places + " places)");
this.places = places;
}
@Override
String description() { return super.description() + ", " + places + " places"; }
}Corrigé
Vehicule(AB-123-CD)
Voiture(5 places)
véhicule AB-123-CD, 5 places
Le constructeur de Voiture commence par super(immat) : le constructeur de Vehicule s'exécute entièrement (première ligne) avant que celui de Voiture ne poursuive (deuxième ligne). Ensuite, v a le type statique Vehicule et le type dynamique Voiture : par liaison dynamique, v.description() exécute la version de Voiture, qui appelle d'abord celle de Vehicule par super.description(), puis ajoute le nombre de places.
100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le podcast et la vidéo du chapitre : 2 minutes d'écoute sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours, le premier QCM et 2 minutes de podcast et de vidéo. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.