Approche Orienté Objet : Methode Equals et HashCode
Résolu/Fermé
Jiko-java
Messages postés
186
Date d'inscription
dimanche 25 septembre 2016
Statut
Membre
Dernière intervention
22 juillet 2017
-
13 juil. 2017 à 22:55
Jiko-java Messages postés 186 Date d'inscription dimanche 25 septembre 2016 Statut Membre Dernière intervention 22 juillet 2017 - 21 juil. 2017 à 00:13
Jiko-java Messages postés 186 Date d'inscription dimanche 25 septembre 2016 Statut Membre Dernière intervention 22 juillet 2017 - 21 juil. 2017 à 00:13
A voir également:
- Approche Orienté Objet : Methode Equals et HashCode
- Vente objet occasion entre particulier - Guide
- Ouvrez ce fichier avec un éditeur de texte simple (bloc-notes, textedit, gedit, etc.) pour y découvrir le nom d’un objet. ✓ - Forum Études / Formation High-Tech
- Trouver un objet avec une photo - Guide
- Une référence d'objet est requise pour la propriété la méthode ou le champ non statique ✓ - Forum C#
- Exercice java orienté objet corrigé ✓ - Forum Java
1 réponse
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 015
Modifié le 14 juil. 2017 à 02:10
Modifié le 14 juil. 2017 à 02:10
Bonjour,
"Comment peut il considéré que c'est les même objet"
Il ne considère pas que ce sont les mêmes objets, il considère que leurs valeurs sont égales, par évaluation de la méthode equals.
Si la méthode equals renvoie true c'est parce que tu lui as demandé de renvoyer true s'ils avaient le même rayon :
La confiance n'exclut pas le contrôle
"Comment peut il considéré que c'est les même objet"
Il ne considère pas que ce sont les mêmes objets, il considère que leurs valeurs sont égales, par évaluation de la méthode equals.
Si la méthode equals renvoie true c'est parce que tu lui as demandé de renvoyer true s'ils avaient le même rayon :
return this.rayon == cercle.rayon;or dans ton code tu as bien deux fois
new Circle(5.0), donc même rayon, la méthode equals renvoie true, donc les deux objets sont égaux.
La confiance n'exclut pas le contrôle
14 juil. 2017 à 15:31
Modifié le 14 juil. 2017 à 16:05
Cependant en général on ne veut pas savoir si les références sont identiques, ce que l'on veux c'est savoir si la valeur qu'ils représentent sont égales.
Par exemple, avec un String je veux faire pour savoir si str a effectivement pour valeur "toto", peu importe que ce soit le même objet ou deux objets différent, ce qui m’intéresse c'est de comparer leurs valeurs...
C'est à ça que sert la méthode equals, à pouvoir comparer deux objets sur des critères spécifiques à leurs valeurs, mais c'est du cas par cas, c'est pour ça qu'il faut la redéfinir pour chaque classe qui représente une valeur.
"if (this == obj) qui regarde la référence des objets et dans ce cas là il renvoie false pas true"
Non, il ne renvoie pas false ici. Pour cette première condition le return ne concerne que le cas où c'est vrai (si c'est exactement le même objet ils ont forcément la même valeur). Mais si la condition est fausse, on continue la comparaison avec les conditions suivantes, jusqu'au qui caractérise l'égalité de valeur spécifique à ta classe.
21 juil. 2017 à 00:13