• 締切済み

Javaでの質問になります。

Javaでの質問になります。 最近Java勉強していて感じたのですが、 オーバーライドとポリモーフィズムの違いがわかりません。 「オーバーライド」 子供のクラスが、親のクラスと全く同じメソッドを上書きする事 したがって、子供のクラスで働きを変更することが出来る。 「ポリモーフィズム」 定義上は同一とみなせるが、実装とは別で色々ある と私は理解しました。 なんかサイト等のコードを見ても腑に落ちない点があって 最初はわかったつもりでいたんですが、見れば見るほど、これ同じ事言ってね?っと いう風に頭の中でループしてしまってます。 理解しやすい解説等ありましたら、ご回答頂ければ幸いです。

みんなの回答

  • kyonn2008
  • ベストアンサー率22% (4/18)
回答No.3

#1、2さんが言っているのはオーバーライドと オーバーロードの話だよね? ポリモーフィズムの方が広義の概念かと。 ポリモーフィズム⊃オーバーライド ポリモーフィズム⊃オーバーロード であって、まぁ同じと言えば同じなんだけど ポリモーフィズムの方がもっと広い意味を持つかな。 参考 http://wisdom.sakura.ne.jp/programming/java/java25.html

  • OKbokuzyo
  • ベストアンサー率43% (130/296)
回答No.2

#1です。 すみません、サンプルに載せたコードに親クラスが載っていませんでした。 再度掲載致します。 public class Oya { public void method(int i) { } } public class Kodomo extends Oya { //オーバーライド public void method(int i){ } //ポリモーフィズム public void method2() { } //ポリモーフィズム public void method2(int i){ } }

  • OKbokuzyo
  • ベストアンサー率43% (130/296)
回答No.1

全然違う物です。 オーバーライドは親クラスのメソッドを、継承した子クラスで書き換えることです。 このとき、メソッド名、引数の型および返り値の型は同じにしなければなりません。 ポリモーフィズムは親クラスとか関係なく、 同一名のメソッドを定義することです。 このとき、引数は異なる必要があります。 (返り値は異なっても同一でもかまいません) public class Kodomo extends Oya { public void method(int i){ } } public class Kodomo extends Oya { //オーバーライド public void method(int i){ } //ポリモーフィズム public void method2() { } //ポリモーフィズム public void method2(int i){ } }

theyouth
質問者

補足

回答ありがとうございます。 No.3の方のご指摘の通り こちらはオーバーロードになるかと思いますが・・・。 オーバーロードでは 同じ名前のメソッドでも引数が違うもの(型、引数の数) 同じメソッド名でも、引数の違いにより動きを変更出来る と認識しております。

専門家に質問してみよう