teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

例のコードについて解説

2016/10/12 15:47

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -6,4 +6,6 @@
6
6
  まず`==`は、**両辺の変数が同じオブジェクトを指し示しているかどうかを判定する**演算子です。内容がどうとかは全く判定しません。最も、同じオブジェクトを指していれば必然的に中身も同じですが。
7
7
  newすると使えないわけではありません。ただし、そのnewしたオブジェクトと同じものを指す変数がほとんどの状況において存在しえないので、だいたいfalseになります。
8
8
 
9
- equalsメソッドは、**自分と引数として渡されたオブジェクトが「同じ」であるかどうかを判定する**ためのメソッドです。**何をもって「同じ」とするかはクラスの設計者が決める必要があります。**何も設計しなければ`==`での比較と全く同じ効果になります。設計に応じて、equalsメソッドをオーバーライドすることで、希望通りの比較ができるようになるのです。
9
+ equalsメソッドは、**自分と引数として渡されたオブジェクトが「同じ」であるかどうかを判定する**ためのメソッドです。**何をもって「同じ」とするかはクラスの設計者が決める必要があります。**何も設計しなければ`==`での比較と全く同じ効果になります。設計に応じて、equalsメソッドをオーバーライドすることで、希望通りの比較ができるようになるのです。
10
+
11
+ 例として出されたコードでは、2つのHeroオブジェクトを作り、名前をともに"ミナト"に設定し、HPを100に設定しました。しかしあくまで**これらのHeroは別個のオブジェクト**です。別々のHeroに、同じ名前、同じHPを設定しただけで、別のものなのです。なので`==`での比較もfalseになるし、「同じ」の定義を`==`と一緒にしているequalsメソッドでもfalseになるのです。