1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| public class DemoEquals {
private int valeur;
public DemoEquals() {
valeur = 0;
}
public boolean equals(DemoEquals obj) {
return obj.valeur==valeur;
}
/*public boolean equals(Object obj) {
if ( obj instanceof DemoEquals ) {
return equals((DemoEquals)obj);
}
return super.equals(obj);
}*/
public static class DemoEquals2 extends DemoEquals {
}
public static void main(String[] args) {
DemoEquals2 obj1 = new DemoEquals2();
DemoEquals2 obj2 = new DemoEquals2();
System.out.println(obj1.equals(obj2)); // affiche true, parce que finalement c'est equals(DemoEquals) qui est appellé
Object obj2typeObject = obj2;
System.out.println(obj1.equals(obj2typeObject)); // affiche false, parce que c'est equals(Object) qui est appelé
Object obj1typeObject = obj1;
System.out.println(obj1typeObject .equals(obj2)); // affiche false, parce que c'est equals(Object) qui est appelé
System.out.println(obj1typeObject .equals(obj2typeObject)); // affiche false, parce que c'est equals(Object) qui est appelé
// décommente la méthode equals(Object) et réexecute : tu verras que l'affichage est true, puis true, puis true, et, enfin, true
}
} |
Partager