Adloun

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

Exercice suivant et tuteur

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.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →