プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (2件)

修飾子とか細かいことを言わなければ、認識は概ねあっています。


ただ、戻り値のデータ型ですが、サブクラスの方の戻り値の型は、スーパークラスの戻り値の型の派生型も使えます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/12/17 16:48

こんにちは。



細かい話ですが、補足です。

・オーバーライドされたメソッドのアクセス修飾詞が、
 スーパークラスのメソッドより制限が厳しくなってはならない。

例:スーパークラスではpublicだったが、サブクラスでprotedtedになる


・オーバーライドされたメソッドでは、
 スーパークラスのメソッドでthrows宣言されているチェック例外よりも、
 範囲の広いチェック例外をthrows宣言してはならない。

例:スーパークラスではIOExceptionをthrows宣言しているが、
  サブクラスではExceptionをthrows宣言している

という制限もあります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/12/17 16:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!