Adloun

programmation Java (école d'ingénieur) · Chapitre 8 · Exercice de TD

Qui a le droit ?

Encapsulation, membres de classe et paquets · niveau 1 (application)

Énoncé

Parmi les lignes A à E du programme suivant, lesquelles compilent ? Donner le message du compilateur pour les autres.


class Boite {
    private int secret = 1;
    int partage = 2;
    public int visible = 3;

    private int doubleSecret() { return 2 * secret; }

    public int reveler() { return doubleSecret(); }
}

public class Ex2Acces {
    public static void main(String[] args) {
        Boite b = new Boite();
        System.out.println(b.visible);       // ligne A
        System.out.println(b.partage);       // ligne B
        System.out.println(b.reveler());     // ligne C
        System.out.println(b.secret);        // ligne D
        System.out.println(b.doubleSecret());// ligne E
    }
}

Corrigé

Les lignes A, B et C compilent : visible est public, partage a la visibilité de paquet et les deux classes sont dans le même paquet (le paquet sans nom), reveler() est publique. Les lignes D et E sont refusées :


Ex2Acces.java:17: error: secret has private access in Boite
        System.out.println(b.secret);        // ligne D
                            ^
Ex2Acces.java:18: error: doubleSecret() has private access in Boite
        System.out.println(b.doubleSecret());// ligne E
                            ^
2 errors

La ligne C montre l'intérêt de l'encapsulation : la méthode publique reveler a le droit d'appeler la méthode privée doubleSecret, parce qu'elle est dans la même classe. L'extérieur obtient le service sans connaître la façon dont il est rendu.

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 →