- ベストアンサー
オーバーライドについて
はじめまして。 変な質問ですみませんが質問させてください。 オーバーライドの定義についてなのですが、 オーバーライドとは、スーパークラスで定義した、メソッドの メソッド名と戻り値のデータ型と引数の数とそのデータ型が等しい メソッドをサブクラスで定義することであると、 認識しているのですが、間違いでしょうか、 特に、戻り値のデータ型はスーパークラスとサブクラスとで同じでなけ ればならないんですよね? ご教授お願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
修飾子とか細かいことを言わなければ、認識は概ねあっています。 ただ、戻り値のデータ型ですが、サブクラスの方の戻り値の型は、スーパークラスの戻り値の型の派生型も使えます。
その他の回答 (1)
noname#23580
回答No.2
こんにちは。 細かい話ですが、補足です。 ・オーバーライドされたメソッドのアクセス修飾詞が、 スーパークラスのメソッドより制限が厳しくなってはならない。 例:スーパークラスではpublicだったが、サブクラスでprotedtedになる ・オーバーライドされたメソッドでは、 スーパークラスのメソッドでthrows宣言されているチェック例外よりも、 範囲の広いチェック例外をthrows宣言してはならない。 例:スーパークラスではIOExceptionをthrows宣言しているが、 サブクラスではExceptionをthrows宣言している という制限もあります。
質問者
お礼
kazuya0302様へ ご回答ありがとうありがとうございました。 連絡が遅れましてすみませんでした。 補足情報ありがとうございました。 とてもわかりやすかったです。
お礼
MeeCat様へ ご回答ありがとうございました。 連絡が遅れましてすみませんでした。 サブクラスのメソッドの戻り値のデータ型が スーパークラスのメソッドの戻り値のデータ型の サブクラスでも、実装ができるんですね。 知りませんでした。