• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:「これならわかるJAVA入門の入門 坂下夕里 P186,187」につい)

「まったく同じ引数定義の場合」とは?

このQ&Aのポイント
  • オーバーロードを使ったプログラムにおいて、引数の定義が完全に一致している場合を指します。
  • つまり、メソッドの引数のデータ型や個数がまったく同じであることを意味します。
  • 引数定義が同じ場合、処理内容や戻り値が異なっていても、複数のメソッドを定義することはできません。

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

  • ベストアンサー
  • ketuago65
  • ベストアンサー率50% (13/26)
回答No.2

確かにちょっと誤解を招くような文章ですが、この場合は 2番目のメソッドがあって、それの戻り値だけを変えたメソッドを作ったら、という解釈 が正しいと思います。 つまり、 class Test { int sum(int i,double d){ return (int)(i + d); } double sum(int i, double d){ return i + d; } } のように戻り値がint の場合とdoubleの場合の2つのsumというメソッドがTestというクラスに宣言されているという状態のことを言っていると思います。 もし int sum(int i,double d)が無くてdouble sum(int i,double d)のみあるという状態ならコンパイルエラーにはなりません。 ようは同じクラスにメソッド名が同じで、引数も同じというメソッドがあったらエラーになるということです。

taro_11
質問者

お礼

詳しい解説ありがとうございます。

その他の回答 (2)

  • ketuago65
  • ベストアンサー率50% (13/26)
回答No.3

すいません補足です。 2番目というのは int sum(int i,double d){ return (int)(i+d); } のことでOKです。

taro_11
質問者

お礼

回答ありがとうございます。

  • ketuago65
  • ベストアンサー率50% (13/26)
回答No.1

オーバーロードには、戻り値は変えても変えなくてもいいが引数は必ず変更しなければいけないというルールがあります。 引数がなんなのかは理解できているでしょうか? 引数とはメソッドに渡す値の部分で、上の例で言えばsumの()の中に定義されている int i,double d の二つです。 つまり上の例にかいてあるプログラムであれば int sum(int i,double d)とdouble sum(int i,double d) は戻り値がint と doubleで違いますが、引数( ( )のなか)が同じなので オーバーロードができません。

taro_11
質問者

お礼

ketuago65様、丁寧な解説ありがとうございます。 参考書に書かれている「2番目のメソッド」とは int sum(int i, int j){ return i + j; } を指しているのでしょうか? つまり int sum(int i, int j){ return i + j; から double sum(int i, double d){ return i + d; に変更した場合と解釈すればいいのでしょうか? よろしくお願いいたします。

関連するQ&A