Différence entre public et private
Résolu
nourrrrrrr
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
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
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
A voir également:
- Private public
- Navigation in private - Guide
- Ip public - Guide
- Dekart private disk - Télécharger - Chiffrement
- My public wifi - Télécharger - Connexion à distance
- Google public dns - Guide
1 réponse
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.