• ベストアンサー

オーバーライドについて

はじめまして。 変な質問ですみませんが質問させてください。 オーバーライドの定義についてなのですが、 オーバーライドとは、スーパークラスで定義した、メソッドの メソッド名と戻り値のデータ型と引数の数とそのデータ型が等しい メソッドをサブクラスで定義することであると、 認識しているのですが、間違いでしょうか、 特に、戻り値のデータ型はスーパークラスとサブクラスとで同じでなけ ればならないんですよね? ご教授お願いします。

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

  • ベストアンサー
  • MeeCat
  • ベストアンサー率75% (6/8)
回答No.1

修飾子とか細かいことを言わなければ、認識は概ねあっています。 ただ、戻り値のデータ型ですが、サブクラスの方の戻り値の型は、スーパークラスの戻り値の型の派生型も使えます。

__tanpopo__
質問者

お礼

MeeCat様へ ご回答ありがとうございました。 連絡が遅れましてすみませんでした。 サブクラスのメソッドの戻り値のデータ型が スーパークラスのメソッドの戻り値のデータ型の サブクラスでも、実装ができるんですね。 知りませんでした。

その他の回答 (1)

noname#23580
noname#23580
回答No.2

こんにちは。 細かい話ですが、補足です。 ・オーバーライドされたメソッドのアクセス修飾詞が、  スーパークラスのメソッドより制限が厳しくなってはならない。 例:スーパークラスではpublicだったが、サブクラスでprotedtedになる ・オーバーライドされたメソッドでは、  スーパークラスのメソッドでthrows宣言されているチェック例外よりも、  範囲の広いチェック例外をthrows宣言してはならない。 例:スーパークラスではIOExceptionをthrows宣言しているが、   サブクラスではExceptionをthrows宣言している という制限もあります。

__tanpopo__
質問者

お礼

kazuya0302様へ ご回答ありがとうありがとうございました。 連絡が遅れましてすみませんでした。 補足情報ありがとうございました。 とてもわかりやすかったです。

関連するQ&A