Différence entre public et private [Résolu/Fermé]

Signaler
Messages postés
9
Date d'inscription
samedi 21 juin 2014
Statut
Membre
Dernière intervention
5 mai 2015
-
Messages postés
16372
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
23 juillet 2021
-
Bonjour tt le monde!
En JAVA, je veut savoir c'est quoi la différence entre un attribut X définit comme public et si on le définit comme private mais avec les deux fonctions getX() et setX(x)?
je sais qu'un attribut public est accessible partout dans la classe et qu'un attribut privé avec get et set sera aussi accessible partout dans la classe seulement par ces deux fonctions, donc c'est quoi le plus de déclarer un attribut privé avec get et set et non pas un attribut publique?
Merci

1 réponse

Messages postés
16372
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
23 juillet 2021
2 856
Bonsoir,

La différence c'est quand tu as d'autres classes. Un attribut public sera visible dans n'importe quelle classe, alors qu'un attribut private ne se sera visible que dans la classe qui le définit.

Tu as également des attributs protected (visibles par les classes filles), ou les attributs sans aucun des trois mots clés dans ce cas ils sont visibles par toutes les classes du package, mais pas ailleurs dans un autre package.

En pratique, il vaut mieux mettre private tout le temps, parce que sinon n'importe qui pourrait faire n'importe quoi avec tes données, ce qui peut entraîner pas mal d'erreurs.

Imagines un String, si n'importe qui peut lui mettre la valeur null par exemple, dès que tu utiliseras une méthode tu auras un NullPointerException, alors qu'avec une méthode set tu peux vérifier que la valeur n'est pas null avant de la changer.

Remarque : si tu veux vraiment donner la visibilité public à un attribut, alors il faut lui rajouter le mot clé final, comme ça tu es sûr qu'il ne changera jamais de valeur.
Mais tout privé c'est quand même le mieux.

De plus il vaut mieux utiliser les méthodes get et set pour accéder aux valeurs des attributs, même si tu es dans la même classe, c'est à dire même si tu as accès à l'attribut privé, cela permettra justement de faire les éventuels tests du set ou les transformations du get, même au sein de la classe locale.
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci