■Main23.java
Hero2 h7 = new Hero2();
h7.setName("あむ");
h7.setHp(70);
Hero2 h8 = new Hero2();
h8.setName("あむ");
h8.setHp(70);
if (h7.equals(h8) == true) {
System.out.println("同じ内容です");
} else {
System.out.println("違う内容です");
}
if (h1.equals(h2) == true) {
System.out.println("同じ内容です");
} else {
System.out.println("違う内容です");
}
■実行結果
Hero2のコンストラクタが動作
Hero2のコンストラクタが動作
あむ
Hero2のコンストラクタが動作
Hero2のコンストラクタが動作
あむ
違う内容です
違う内容です
_________________________________________________________
そのクラスのインスタンスについて、「何を持って、意味的に同じと見なすか」をequals()メソッドのオーバーライドという形で指定しなければなりません。
■Hero2.javaに
equals()メソッドのオーバーライドをした
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o instanceof Hero2) {
Hero2 h7 = (Hero2) o;
if (this.name.equals(h7.name)) {
return true;
}
}
return false;
}
■Main23.javaをコンパイルした実行結果
Hero2のコンストラクタが動作
Hero2のコンストラクタが動作
あむ
Hero2のコンストラクタが動作
Hero2のコンストラクタが動作
あむ
同じ内容です
違う内容です