最終更新日:2026年8月24日
fe fe-technology programming
まず結論
継承(Inheritance)とは、上位クラスが持つデータや機能を、下位クラスが引き継ぐ仕組みです。
基本情報技術者試験では、次の判断軸を押さえると選択肢を切りやすくなります。
共通部分を上位クラスにまとめる
↓
下位クラスが引き継ぐ
↓
同じ処理を何度も定義しなくてよい
↓
変更箇所を局所化しやすい
特に、「上位クラスの性質を引き継ぐ」「共通部分をまとめる」「変更箇所を減らす」という表現があれば、継承を疑います。
直感的な説明
継承は、「共通する部分を親にまとめて、子がそれを受け継ぐ」と考えると分かりやすいです。
例えば、Vehicle という上位クラスに、乗り物に共通する機能を定義します。
Vehicle
├─ move()
└─ stop()
↓ 継承
Car
├─ move()
├─ stop()
└─ refuel()
Truck
├─ move()
├─ stop()
└─ loadCargo()
Car と Truck の両方で move() や stop() を一から定義する必要はありません。
共通部分を Vehicle にまとめておけば、下位クラスはそれを引き継げます。
このとき、共通の move() の処理を変更したい場合も、上位クラス側を中心に見直せるため、同じ変更を複数のクラスへ繰り返す必要を減らせます。
継承のポイントは、「共通部分を一か所に寄せる」ことです。
定義・仕組み
オブジェクト指向では、似た性質を持つクラス同士を、上位・下位の関係で整理できます。
上位クラスと下位クラス
上位クラスは、複数のクラスに共通する性質や処理を持ちます。
下位クラスは、その共通部分を引き継ぎつつ、自分だけの機能を追加できます。
上位クラス
Animal
├─ name
└─ move()
↓ 継承
下位クラス
Dog
├─ name
├─ move()
└─ bark()
この関係は、次のように整理できます。
| 用語 | 意味 |
|---|---|
| 上位クラス | 共通する性質や処理を定義するクラス |
| 下位クラス | 上位クラスの性質や処理を引き継ぐクラス |
| 継承 | 上位クラスの機能を下位クラスが受け継ぐ仕組み |
継承すると何がうれしい?
同じ処理を複数のクラスに重複して書くと、仕様変更のたびに複数箇所を直す必要があります。
継承を使わない
Car.move() を修正
Truck.move() を修正
Bus.move() を修正
共通部分を上位クラスへまとめれば、変更箇所を減らしやすくなります。
継承を使う
Vehicle.move() を中心に修正
↓
Car / Truck / Bus が共通機能を引き継ぐ
このように、共通機能の変更箇所を局所化しやすいことが継承の利点です。
ただし、すべての変更が必ず上位クラス1か所だけで済むわけではありません。下位クラスが独自に再定義している処理などは、個別に確認が必要です。
このテーマは、基本情報技術者試験の「アルゴリズムとプログラミング」やオブジェクト指向に関係する内容です。公式の出題範囲やシラバスは、IPA:基本情報技術者試験 から確認できます。
科目Aでどう出る?
科目Aでは、オブジェクト指向の特徴として、継承・カプセル化・ポリモーフィズムなどを切り分ける問題に注意します。
判断キーワード
| 問題文の表現 | 疑う概念 |
|---|---|
| 上位クラスの性質を引き継ぐ | 継承 |
| 共通部分をまとめて再利用する | 継承 |
| 変更箇所を局所化しやすい | 継承 |
| 内部のデータや実装を隠す | カプセル化 |
| 同じ呼び出しで動作が変わる | ポリモーフィズム |
| 本質的な特徴だけを取り出す | 抽象化 |
試験中は、次の3つを特に区別すると判断しやすくなります。
カプセル化
→ 内部を隠す
継承
→ 親の性質を引き継ぐ
ポリモーフィズム
→ 同じ呼び出しで動作が変わる
「変更箇所を局所化」の意味
継承について、次のような説明が出ることがあります。
共通処理を上位クラスにまとめる
↓
下位クラスがそれを引き継ぐ
↓
共通部分の変更を一か所に寄せやすい
ここでいう「局所化」とは、変更しなければならない場所をできるだけ限定することです。
「上位クラスを変更するためには、その上にあるすべてのクラスも変更しなければならない」という意味ではありません。
どんな場面で使う?
共通機能をまとめたいとき
複数のクラスに同じ処理がある場合、共通部分を上位クラスへまとめられます。
社員
├─ 氏名
└─ 出勤する()
正社員
└─ 賞与を計算する()
契約社員
└─ 契約期間を確認する()
氏名 や 出勤する() のような共通部分を社員クラスにまとめれば、それぞれの下位クラスで重複して定義する必要を減らせます。
種類を追加したいとき
既存の上位クラスを基にして、新しい下位クラスを追加できます。
Vehicle
├─ Car
├─ Truck
└─ Bus ← 新しく追加
共通機能は引き継ぎ、追加する種類に必要な機能だけを定義できます。
よくある誤解・混同
継承とカプセル化は同じ?
違います。
継承
→ 共通部分を上位クラスから引き継ぐ
カプセル化
→ データや処理をまとめ、内部を隠す
カプセル化は、オブジェクト間の不要な依存を減らしやすくする考え方です。
「カプセル化によって相互依存性を高める」という説明は、方向が逆なので注意します。
詳しくは、カプセル化とは?継承・多態性との違いで整理しています。
継承とポリモーフィズムは同じ?
違います。
継承は、上位クラスの機能を引き継ぐ仕組みです。
ポリモーフィズムは、同じメソッドを呼び出しても、対象によって異なる処理を実行できる性質です。
継承
→ 引き継ぐ
ポリモーフィズム
→ 同じ呼び出しで動作を変える
継承した下位クラスでメソッドをオーバーライドすることで、ポリモーフィズムを実現することがあります。
詳しくは、ポリモーフィズム(多相性)とは?オーバーライドとの関係を整理で確認できます。
下位クラスを変更すると、上位クラスも必ず変更する?
必ずしも変更しません。
下位クラスは、上位クラスから共通機能を引き継いだうえで、独自の機能を追加できます。
上位クラス
→ 共通部分
下位クラス
→ 共通部分を引き継ぐ
→ 独自部分だけ追加・変更
そのため、下位クラス固有の変更なら、上位クラスに影響を与えずに変更できる場合があります。
抽象化では操作をすべて事前に決める?
そのように覚えるのは適切ではありません。
抽象化は、対象の細かな違いをすべて列挙することではなく、共通する本質的な特徴に注目して整理することです。
細かい違いを全部扱う
→ 抽象化ではない
共通する重要な特徴を取り出す
→ 抽象化
まとめ(試験直前用)
- 継承は、上位クラスの性質や処理を下位クラスが引き継ぐ仕組み
- 共通部分を上位クラスへまとめることで、重複を減らせる
- 共通部分の変更箇所を局所化しやすい
- カプセル化は「内部を隠す」、継承は「引き継ぐ」
- ポリモーフィズムは「同じ呼び出しで動作が変わる」
- 「親の性質を引き継ぐ」「共通部分をまとめる」「変更箇所を局所化」が継承の判断ワード