この試験の対策ガイド

基本情報技術者試験 対策ガイド

合格率・勉強法・参考書の選び方をまとめています

見る →
答えと解説を見る(先に解くのがおすすめ)

正解は エ

解説

オブジェクト指向プログラミングの多相性(Polymorphism:ポリモーフィズム)は「同一のインタフェース(メソッド名)で異なるクラスのオブジェクトを操作したとき、各クラスに応じた異なる動作をする」性質です。例えば「動物」クラスのsound()メソッドを犬クラスは「ワン」、猫クラスは「ニャン」として実装することで、同じsound()という呼び出しで異なる結果を得られます。継承と多相性を組み合わせることで、共通の操作に対してサブクラスごとの特有動作を実現できます。委譲(他のオブジェクトに処理を委ねる)、継承(親クラスの機能を引き継ぐ)、コンポジション(オブジェクトを組み合わせる)との違いを理解しましょう。

なぜ他の選択肢は違うのか

選択肢 ア
委譲(Delegation)は、あるオブジェクトが受け取った処理要求を別のオブジェクトに転送して実行させる設計パターンです。異なるクラスを同一インタフェースで操作して異なる動作をするという多相性の説明とは異なります。
選択肢 イ
継承(Inheritance)は、親クラス(スーパークラス)の属性・メソッドを子クラス(サブクラス)が引き継ぐことで、コードの再利用を実現する仕組みです。多相性は継承と組み合わせて実現することが多いですが、「同一インタフェースで異なる動作」を表す概念は多相性です。
選択肢 ウ
コンポジション(Composition)は、クラスが他のクラスのインスタンスを部品として保持し、機能を組み合わせる設計手法です。「継承より合成を使え」という格言で知られます。異なるクラスを同一インタフェースで操作する概念とは異なります。

解くときのポイント

多相性(ポリモーフィズム)=「同じメソッド名の呼び出しで、クラスによって異なる動作をする」。継承(親機能を引き継ぐ)、委譲(別オブジェクトに処理を委ねる)、コンポジション(部品として組み合わせる)との区別が重要。「同一インタフェース+異なる動作=多相性」。