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
- 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.