Différence entre public et private
Résolu/Fermé
nourrrrrrr
Messages postés
9
Date d'inscription
samedi 21 juin 2014
Statut
Membre
Dernière intervention
5 mai 2015
-
21 juin 2014 à 22:19
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 21 juin 2014 à 22:35
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 21 juin 2014 à 22:35
A voir également:
- Private public
- Navigation in private - Guide
- Google public dns - Guide
- Ip public - Guide
- Compte public instagram qui regarde mon profil - Guide
- Réseau public ou privé - Forum Réseau
1 réponse
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
21 juin 2014 à 22:35
21 juin 2014 à 22:35
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.
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.