Constructeurs

Initialiser l'état d'un objet à sa création : constructeur par défaut, constructeurs paramétrés et surchargés, appel this(…), valeurs par défaut des attributs et constructeur de copie, en Java.

  • 24 cartes
  • 4 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Comprendre

Quelques cartes du deck

  • Constructeur : de quoi s'agit-il ?

    Voir la réponse

    Bloc de code, au nom de la classe et sans type de retour, exécuté à chaque création d'un objet pour initialiser son état.

    Il s'appelle avec new et ne se rappelle jamais sur un objet existant. Écrire un type de retour, même void, en ferait une simple méthode.

  • Que valent p.x et p.y après la création de p ?

    ```java
    class Point {
    int x;
    int y;
    Point(int x) {
    this.x = x;
    }
    }

    Point p = new Point(3);
    `

    • 3 et 0
    • 3 et 3
    • 0 et 0
    • 3 et null
    Voir la réponse

    3 et 0

    Le constructeur n'affecte que this.x. y est un int : il garde la valeur par défaut 0, jamais null (réservé aux références).

  • Un constructeur porte le même nom que la … et ne déclare aucun …, pas même void.

    Voir la réponse

    Un constructeur porte le même nom que la classe et ne déclare aucun type de retour, pas même void.

    public void Point(int x) compile, mais c'est une méthode ordinaire qui s'appelle Point : new Point(3) ne l'appelle pas.

  • Constructeur par défaut : de quoi s'agit-il ?

    Voir la réponse

    Constructeur sans paramètre que le compilateur ajoute seul, uniquement quand la classe n'en déclare aucun.

    Dès qu'on écrit un constructeur, celui-là disparaît : new Point() ne compile plus si seul Point(int x) existe.

  • Pourquoi écrit-on un constructeur plutôt que d'affecter les attributs un par un après le new ?

    • Les attributs ne peuvent être affectés que dans un constructeur
    • Sans constructeur, la classe ne peut pas être instanciée
    • Le constructeur s'exécute plus vite qu'une affectation
    • Aucun objet n'existe sans avoir reçu un état de départ cohérent
    Voir la réponse

    Aucun objet n'existe sans avoir reçu un état de départ cohérent

    Le constructeur garantit que l'initialisation a lieu, une seule fois, avant toute autre utilisation. Sans lui, on pourrait oublier un attribut. Une classe sans constructeur reste instanciable grâce au constructeur par défaut.