応用情報技術者 2018年 春期 午前2 問07
問題文
オブジェクト指向プログラミングにおいて、同一クラス内に、メソッド名が同一であって、引数の型、個数又は並び順が異なる複数のメソッドを定義することを何と呼ぶか。
選択肢
ア:オーバーライド
イ:オーバーロード(正解)
ウ:カプセル化
エ:汎化
オブジェクト指向プログラミングにおけるメソッドの多重定義【午前2 解説】
要点まとめ
- 結論:同一クラス内でメソッド名は同じでも引数の型や個数が異なる複数のメソッド定義は「オーバーロード」と呼びます。
- 根拠:オーバーロードはメソッドの多重定義で、引数の違いによって呼び分けられるため、柔軟なメソッド設計が可能です。
- 差がつくポイント:オーバーライドは親クラスのメソッドを子クラスで再定義すること、オーバーロードは同一クラス内での多重定義である点を明確に区別しましょう。
正解の理由
イ: オーバーロードは、同じメソッド名で引数の型や個数、順序が異なる複数のメソッドを同一クラス内に定義することを指します。これにより、同じ操作名で異なる処理を実装でき、コードの可読性と再利用性が向上します。
よくある誤解
オーバーライドとオーバーロードを混同しやすいですが、オーバーライドは継承関係におけるメソッドの再定義であり、引数の違いは関係ありません。
解法ステップ
- 問題文の「同一クラス内」と「メソッド名が同一で引数が異なる」に注目する。
- 「同一クラス内」でのメソッドの多重定義は「オーバーロード」であることを思い出す。
- 「オーバーライド」は親子クラス間のメソッド再定義であるため除外する。
- 「カプセル化」「汎化」はメソッドの多重定義とは無関係であることを確認する。
- よって正解はイの「オーバーロード」と判断する。
選択肢別の誤答解説
- ア: オーバーライド
親クラスのメソッドを子クラスで再定義することであり、引数の違いは必須ではありません。 - イ: オーバーロード
正解。引数の型や個数が異なる同名メソッドの多重定義です。 - ウ: カプセル化
データや処理を外部から隠蔽し、アクセス制御を行う概念であり、メソッドの多重定義とは無関係です。 - エ: 汎化
複数の具体的なクラスから共通の抽象的なクラスを作る継承の概念であり、メソッドの多重定義とは異なります。
補足コラム
オーバーロードは多態性(ポリモーフィズム)の一種で、同じ操作名で異なる処理を実装できるため、API設計やユーザーインターフェースの柔軟性向上に役立ちます。一方、オーバーライドは動的ポリモーフィズムの基盤であり、継承関係での振る舞いの変更に使われます。
FAQ
Q: オーバーロードはどの言語で使えますか?
A: JavaやC++、C#など多くのオブジェクト指向言語でサポートされています。
A: JavaやC++、C#など多くのオブジェクト指向言語でサポートされています。
Q: オーバーライドとオーバーロードは同時に使えますか?
A: はい。親クラスのメソッドを子クラスでオーバーライドしつつ、同一クラス内でオーバーロードも可能です。
A: はい。親クラスのメソッドを子クラスでオーバーライドしつつ、同一クラス内でオーバーロードも可能です。
関連キーワード: オーバーロード、オーバーライド、メソッド多重定義、ポリモーフィズム、オブジェクト指向

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

