第9回:オーバーロード、オーバーライド、実行時のデータ型(1) (2/2)

徹底攻略Java 2プログラマ問題集 Platform 1.4対応
徹底攻略Java 2プログラマ問題集 Platform 1.4対応

第9回:オーバーロード、オーバーライド、実行時のデータ型(1)
著者:八木裕乃/明壁敦子
監修者:須澤秀人  編者:ソキウス・ジャパン   2005/8/23
前のページ  1  2
解答

   1ページ目の問題の解答を掲載します。解答には、問題の正解やその理由だけでなく、用語や重要事項などが詳しく解説されています。
第1問の解答: B、C、E

   メソッドのオーバーロードに関する問題です。オーバーロードとは、同じメソッド名で、引数のデータ型、数、並び順が異なる場合に成り立ちます。

   選択肢AとDの記述は、引数のデータ型、数、並び順が一致しています。同じクラス内に同じ名前で、これらが一致するメソッドを複数定義できません。

   オーバーロードされたメソッド同士は互いに無関係なメソッドとなります。アクセス修飾子や戻り値のデータ型、発生する例外についての制限はありません。各選択肢に関する説明は以下のとおりです。

A. 引数のデータ型、数、並び順が一致しているため、定義できません。
B. 引数のデータ型が一致していないため、定義可能です。
C. 引数のデータ型が一致していないため、定義可能です。
D. 引数のデータ型、数、並び順が一致しているため、定義できません。
E. 引数のデータ型が一致していないため、定義可能です。
   したがって、BCEが正解です。


第2問の解答: B、D

   メソッドのオーバーライドに関する問題です。オーバーライドとは、スーパークラス(もしくはインタフェース)で定義されているメソッドを、サブクラス(もしくはインタフェースを実装したクラス)で再定義することをいいます。

   スーパークラスのメソッドの定義(メソッド名、戻り値の型、引数の型や数)を変更することはできないが、サブクラスに特化した機能を持たせる必要がある場合などに使用します。

オーバーライド
   オーバーライドを行う際のルールは以下のとおりです。

メソッド名、戻り値の型、引数の型や数、並び順をスーパークラスのメソッドと一致させる
   メソッド名、戻り値の型、引数の型や数、並び順がスーパークラスのメソッドと一致していなければなりません。1つでも異なると、オーバーライドと見なされません。メソッド名が異なる場合は、別のメソッドと見なされます。引数の型や数、並び順が異なる場合は、オーバーロードされたメソッドと見なされます。メソッド名、引数の型や数、並び順が同じで、戻り値の型のみが異なる場合は、メソッドの呼び出しが区別できないため、コンパイルエラーとなります。


final修飾子の付いたメソッドはオーバーライド不可
   スーパークラスのメソッドにfinal修飾子が付与されている場合は、そのメソッドをオーバーライドできません。コンパイルエラーが発生します。


スーパークラスのメソッドよりも厳しいアクセスレベルは付与できない
   スーパークラスのメソッドに指定されるアクセスレベルより、制限の厳しいアクセスレベルを付与することはできません。たとえば、スーパークラスのメソッドにpublicが指定されている場合、オーバーライドするメソッドにprivateを指定することはできません。コンパイルエラーが発生します。


スーパークラスのメソッドに指定されるthrows節以外の例外は指定不可
   スーパークラスのメソッドに指定されるthrows節以外の例外を指定することはできません。ただし、スーパークラスのメソッドに指定された例外を、より限定する例外、つまりスーパークラスのメソッドに指定された例外クラスのサブクラスの例外を指定することは可能です。

   各選択肢に関する説明は以下のとおりです。

A. 戻り値の型が一致していないため、コンパイルエラーとなります。
B. メソッド名、戻り値の型、引数の型や数、並び順がスーパークラスのメソッドと一致しているため、オーバーライドと見なされます。
C. コンパイルは成功しますが、引数の型が異なるため、オーバーライドとは見なされません。
D. メソッド名、戻り値の型、引数の型や数、並び順がスーパークラスのメソッドと一致しています。さらに、発生する可能性がある例外ArithmeticExceptionは、スーパークラスで発生する可能性がある例外Exceptionのサブクラスとなり、オーバーライドと見なされます。
E. アクセスレベルがスーパークラスのメソッドより制限が厳しいため、コンパイルエラーとなります。
   したがって、BDが正解です。


第3問の解答: B

   メソッドのオーバーライドに関する問題です。サブクラスのChildクラスでprintMessageメソッドを定義しています。メソッド名、戻り値の型、引数の情報が一致しているため、オーバーライドとして見なされます。

   15行目でChildクラスのインスタンスを生成し、getMessageメソッドを呼び出していますが、参照変数のデータ型がスーパークラスであるParent型です。ただし、この場合でも、オーバーライドしたメソッドが実行されます。したがって、Bが正解です。

前のページ  1  2

書籍紹介
徹底攻略Java 2プログラマ問題集
Platform 1.4対応

徹底攻略Java 2プログラマ問題集 Platform 1.4対応 SUN Java認定コースを担当する著者が臨場感ある問題と解説を書き下ろし!出題傾向をカバーする精錬問題を豊富に用意しているので、短期間で効率よく学習できます。実際の出題傾向を問題に盛り込むほか、詳しい解説をそれぞれ用意。単純な正否だけでなく、選択肢ごとになぜこれが正しいか、誤っているかその根拠をていねいに紹介しています。最終章の総仕上げ問題で試験の模擬対策も万全です!
発売日:2004.12.17発売
販売価格:3,360円(税込)

著者プロフィール
八木 裕乃
株式会社CSK 教育サービス事業部に所属。現在は、Java、UMLを利用したオブジェクト指向系の開発講座のコース開発からインストラクションまでを担当。Javaとはα版からの付き合いでそろそろ10年来となる!?取得資格:SJC-P、SJC-WC、OCUP Foundamental、MCSD、オラクルマスターなど著書:「マイクロソフト認定技術資格試験 MCP/MCSE必須用語辞典」(アスキー)



著者プロフィール
明壁 敦子
株式会社CSK 教育サービス事業部に所属。Java、UML、XML、オブジェクト指向、Webアプリケーション開発などの教材作成および講義を担当。Sun認定Javaインストラクタとしては、自らがJavaの習得に苦労した経験から、初心者でも解りやすい講座を心がけている。取得資格:SJC-P、SJC-WC、OCUP Fundamentalなど



監修者プロフィール
須澤 秀人
株式会社CSK 教育サービス事業部に所属。Java、UML、XML、ASP.NET、C、C++などの教材作成および講義を担当。「よく食べよく寝る」が座右の銘。取得資格:SJC-P、SJC-WC、OCUP Fundamentalなど著書:「dBASE?PLUSパーフェクトマスター入門編」(秀和システム)、「基本情報技術者 午後 Java スーパー攻略」(秀和システム・共著)など



編者プロフィール
株式会社ソキウス・ジャパン
クォリティ・メディア・カンパニーを標榜する出版社。2001年11月設立。2002年10月より株式会社インプレスと協業し、これまで30冊近い「徹底攻略問題集」を編纂する。また、自社で月刊「オープン・エンタープライズ・マガジン」を発行、発売している。
http://www.sociusjapan.co.jp/


INDEX
第9回:オーバーロード、オーバーライド、実行時のデータ型(1)
  問題
解答
徹底攻略Java 2プログラマ問題集 Platform 1.4対応
第1回 クラス定義とアクセス制御
第2回 制御文、アサーションと例外処理(1)
第3回 制御文、アサーションと例外処理(2)
第4回 ガーベッジコレクション
第5回 Java言語の基礎(1)
第6回 Java言語の基礎(2)
第7回 演算子とデータのメモリ割り当て(1)
第8回 演算子とデータのメモリ割り当て(2)
第9回 オーバーロード、オーバーライド、実行時のデータ型(1)
第10回 オーバーロード、オーバーライド、実行時のデータ型(2)
第11回 オーバーロード、オーバーライド、実行時のデータ型(3)
第12回 スレッド
第13回 java.langパッケージのJava言語の基礎
第14回 コレクション・フレームワーク

人気記事トップ10

人気記事ランキングをもっと見る