継承の解説(基本情報技術者シラバス用語)

目次

継承とは

継承(けいしょう)とは、オブジェクト指向プログラミングにおいて、すでにあるクラス(親クラス / スーパークラス)の機能や特徴を引き継いで、新しく別のクラス(子クラス / サブクラス)を作る仕組みのことです。英語では「インヘリタンス」と呼ばれます。継承を使用することで、親クラスに定義されたデータ(属性)や処理(メソッド)を子クラスで再度記述する必要がなくなり、プログラムのコード量を大幅に削減できます。また、親クラスの機能を活かしつつ、子クラスに独自の機能を追加したり、一部の機能を上書き(オーバーライド)して変更したりすることも可能です。

具体例

「動物」という共通の親クラスを定義し、それを継承して「犬」や「猫」という子クラスを作ります。「動物」クラスにある「食べる」という処理は自動的に引き継がれ、「犬」クラスにだけ「吠える」という特有の処理を追加します。これにより共通部分の開発を省略できます。

もう少し詳しく

継承は、クラス間に「is-a関係(AはBの一種である)」が成り立つ場合に用いられます。例えば「犬 is an 動物(犬は動物の一種である)」や「トラック is a 車(トラックは車の一種である)」といった関係性です。継承関係において、元となるクラスを「親クラス」「スーパークラス」「基底クラス」と呼び、それを引き継いで作られた新しいクラスを「子クラス」「サブクラス」「派生クラス」と呼びます。子クラスでは、親クラスから引き継いだメソッドの処理内容を、自分の都合に合わせて書き換えることができます。これを「オーバーライド」と呼び、ポリモーフィズム(多態性)を実現するための重要なテクニックとなります。なお、JavaやC#などの多くのモダンなプログラミング言語では、複数の親クラスから同時に機能を引き継ぐ「多重継承」は、プログラムの構造が複雑になりすぎて矛盾が生じやすくなるため禁止されており、代わりにインターフェースなどの別の仕組みを用いて柔軟性を確保しています。

試験でのポイント

情報処理技術者試験では、オブジェクト指向の三大要素の一つとして確実に出題されます。キーワードである「スーパークラス(親)」と「サブクラス(子)」の用語の組み合わせ、そして「差分プログラミング(既存のコードの変更部分・追加部分だけを記述する手法)」というメリットが問われます。また、親クラスのメソッドを子クラスで再定義する「オーバーライド」と、同じクラス内で引数の数や型が異なる同名のメソッドを複数定義する「オーバーロード」という、名前が似ている2つの用語をひっかけ問題として出題されることが非常に多いです。意味を混同しないように明確に区別して覚えておきましょう。UMLのクラス図では、継承関係は白抜きの三角矢印(汎化関係)を用いて、子クラスから親クラスへ向かって線を引く形で表現されることも頻出ポイントです。

関連する用語

クラス、オブジェクト指向、ポリモーフィズム、オーバーライド

読んだ内容を10問練習と実技で確認

記事で理解した用語を、StudyQuestの演習とクラウド実技ラボで定着させます。

10問練習 実技ラボ