014-005-009
toStringとequalsのオーバーライド
中級
問題説明
toStringとequalsのオーバーライド
この問題では: ProductクラスでtoString()とequals()メソッドをオーバーライドし、オブジェクトの文字列表現と等価比較をカスタマイズするプログラムを作成します。
学習目標: Objectクラスから継承したtoString()とequals()のオーバーライド方法と、その実用的な使い方を理解する
概要
すべてのJavaクラスはObjectクラスを継承しており、toString()とequals()メソッドを持っています。デフォルトのtoString()はクラス名とハッシュコードを返し、デフォルトのequals()は参照の同一性(==)を比較します。実用的なクラスでは、これらをオーバーライドして意味のある動作にカスタマイズします。
仕様
Productクラス
String nameとint priceフィールドを持つ- コンストラクタ
Product(String name, int price)で初期化する toString()をオーバーライドして"Product{name='<name>', price=<price>}"を返すequals(Object obj)をオーバーライドしてnameとpriceが同じならtrueを返す
Mainクラス
Product p1 = new Product("Laptop", 1200)を作成Product p2 = new Product("Laptop", 1200)を作成Product p3 = new Product("Phone", 800)を作成p1.toString()の結果を出力p3.toString()の結果を出力"p1.equals(p2): "+p1.equals(p2)の結果を出力"p1.equals(p3): "+p1.equals(p3)の結果を出力
出力形式
Product{name='Laptop', price=1200}
Product{name='Phone', price=800}
p1.equals(p2): true
p1.equals(p3): false
