• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:コードの意味を解説して頂けないでしょうか。)

コードの意味を解説して頂けないでしょうか。

このQ&Aのポイント
  • addメソッドはNumberクラスの参照を引数にとり、自分の数との合計値をフィールドに持つ新しいオブジェクトを作成して返します。
  • Numberクラスは整数値をフィールドとして持ち、その値を返すゲッターメソッドやコピーを作成するメソッドを持っています。
  • 実行結果はa + b = 110となります。

質問者が選んだベストアンサー

  • ベストアンサー
  • root139
  • ベストアンサー率60% (488/809)
回答No.2

> 前者の「Number(n+m.n)」が何を意味しているのか全く分かりません。 やっている事を一つ一つ見ていけば理解できるかと思います。 ---------------------------------------- public Number add(Number m){ return new Number(n+m.n); } ---------------------------------------- これを分解していくと下記の様に書き直せます。 ---------------------------------------- public Number add(Number m) { int argN = m.n; // (1) 引数のNumberオブジェクトのnを取り出す。 int num = n + argN; // (2) 自分自身のnと(1)で取り出した引数のNumberオブジェクトのnを足して、変数numに入れる。 Number number = new Number(num); // (3) 足した結果を元に新しいNumberオブジェクトを作る。 return number; // (4) 作った新しいNumberオブジェクトをメソッドの戻り値として返す。 } ---------------------------------------- したがって、addメソッドは「自分自身と引数のNumberオブジェクトのnの値を足し合わせたものをnに持つ新たなNumberオブジェクトを生成して返す」もの、と言う事ができます。

taro_11
質問者

お礼

詳細で丁寧な解説ありがとうございます。 やっと理解出来ました。 私の場合、「Number(n+m.n);」の部分を「Number((n+m).n);」のように勝手に解釈して、 その先入観がずっと頭から離れず堂々巡りをしておりました。

その他の回答 (2)

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.3

> 前者の「Number(n+m.n)」が何を意味しているのか全く分かりません。 new Number(n+m.n)は、new Number(this.n+m.n)と書き換える事ができる。 public Number add(Number m) { return new Number(this.n+m.n); } つまり、自分自身のnと引数で指定されたNumberクラスの別インスタンスのnを足し合わせたintを引数にさらに別のNumberクラスのインスタンスを作ってそいつをリターンしている訳だ。 なので、 Number a = new Number(10); Number b = new Number(100); Number c = a.add(b); は、nが10であるaと、nが100であるbの2つのNumberクラスのインスタンスが作られた後、a.add(b)というところでnew Number(a.n+b.n)すなわちnew Number(10+100)でnが100であるNumberクラスのインスタンスが作られてcに代入されているのだな。

taro_11
質問者

お礼

返信ありがとうございます。 「 Number(this.n+m.n)」のように考えれば良かったのですね。 その辺に気が付かなくて頭が混乱していました。 具体的な例を挙げて頂き、とても勉強になります。

  • kotoby2003
  • ベストアンサー率15% (280/1755)
回答No.1

私にもよくわかりませんね。 「return new Number(n+m.n);」に対応するNumber(Number a, Number b)のコンストラクタがNumberクラスに見受けられないので、上記のコードだけでは、コンパイルエラーになるのではないかと思います。

taro_11
質問者

お礼

返信ありがとうございます。

関連するQ&A