014-005-009

toStringとequalsのオーバーライド

中級

問題説明

toStringとequalsのオーバーライド

この問題では: ProductクラスでtoString()equals()メソッドをオーバーライドし、オブジェクトの文字列表現と等価比較をカスタマイズするプログラムを作成します。

学習目標: Objectクラスから継承したtoString()equals()のオーバーライド方法と、その実用的な使い方を理解する

概要

すべてのJavaクラスはObjectクラスを継承しており、toString()equals()メソッドを持っています。デフォルトのtoString()はクラス名とハッシュコードを返し、デフォルトのequals()は参照の同一性(==)を比較します。実用的なクラスでは、これらをオーバーライドして意味のある動作にカスタマイズします。

仕様

Productクラス

  • String nameint priceフィールドを持つ
  • コンストラクタProduct(String name, int price)で初期化する
  • toString()をオーバーライドして"Product{name='<name>', price=<price>}"を返す
  • equals(Object obj)をオーバーライドしてnamepriceが同じなら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

コードを実行してみませんか?

この問題のコードエディタと実行機能を使用するには、ログインしてください。

アカウントをお持ちでない方

新規登録