IT·テック

継承

親から受け継いだ秘伝のレシピノートに、自分だけの特製ソースの作り方を書き足して新しい看板メニューを完成させるようなものです。

  • 約3分
  • 図 1点
  • 2026-10-12 検証

定義

親が使っていた頑丈な自転車を譲り受け、前かごやライトだけを新しく取り付けて自分好みの自転車に仕上げるように、プログラミングでもすでに完成している設計図を受け継ぎ、そこに新しい機能を追加する技術のことです。これを「継承(Inheritance)」と呼びます。 既存のクラス(プログラムの設計図)が持つデータや動作をそのまま引き継ぐため、同じコードを何度も書くことなく、必要な部分だけを追加・変更して新しい設計図を手軽に作ることができます。

土台をそのまま受け継いで新しく作る

スマホゲームに登場するたくさんのモンスターを作る場面を想像してみましょう。スライム、ドラゴン、ゾンビなど、あらゆるモンスターは基本的に「HP(体力)」や「移動速度」を持っており、「移動する」や「攻撃を受ける」といった共通の動作を行います。

新しいモンスターを作るたびに、同じ基礎コードを一から書き直していては時間がかかりますし、タイプミスの原因にもなります。そこで、共通する機能だけをすっきりとまとめた「基本モンスター」の設計図をあらかじめ1つ作っておけば、同じ作業を繰り返す手間を大幅に減らせます。

ドラゴンの設計図を作るときに基本モンスターの設計図を継承すれば、基礎的な機能はすでに完成した状態からスタートできます。開発者はそこに「火を吹く」や「空を飛ぶ」といったドラゴンならではの独自機能だけを書き足せばよいのです。このように既存の設計をそのまま受け継いで無駄をなくすことが、コードの再利用を最大限に高める継承の基本原理です。

受け継いだ機能を自分流にカスタマイズする

親から譲り受けた服のサイズを自分に合わせて直して着るように、継承した機能も子側の設計図で新しく作り直すことができます。プログラミングではこれを「メソッドのオーバーライド(機能の再定義)」と呼びます。

たとえば、基本モンスターの「移動する」機能がテクテクと歩く動作だったとしましょう。しかし、巨大な翼を持つドラゴンが地面をとぼとぼ歩いていたら不自然ですよね。

そんなときは、受け継いだ「移動する」という命令の名前はそのままで、実際の動作内容だけを空を飛ぶ動きへと上書き(オーバーライド)することができます。指示を出す側はどのモンスターに対しても同じように「移動しろ!」と命令するだけで済み、各モンスターは自分に合わせて再定義された個性的な方法で動いてくれます。

もう少し詳しく:何でも受け継げばいいわけではない?

少し正確にお伝えすると、継承がいつでも正解というわけではありません。継承を何重にも深く複雑に使ってしまうと、親の設計図をほんの少し変更しただけで、何十個もの子の設計図が次々と壊れてしまう致命的な問題が起こり得ます。

プログラミングでは、コード同士が強く依存し合って切り離しにくい状態を「結合度が高い」と表現します。継承は親と子を特に強く結びつける関係です。親の設計図が変わると子の設計図にまで予測困難な影響が及ぶため、後からコードを修正するのが非常に難しくなってしまいます。

そのため、多くのソフトウェア設計では、無闇に継承を使うのではなく、必要なパーツをレゴブロックのように組み合わせて使うコンポジション(組み合わせ・委譲)という手法が推奨されることも増えています。継承は「Aは本当にBの一種である(is-a関係)」と確実に言い切れる場合にのみ慎重に使うことで、頑丈で変更に強いプログラムになります。

よくある誤解

誤解

継承を使えば使うほど、コードは必ず美しくなり優れたプログラムになる。

事実

継承関係をむやみに深く重ねすぎると、親と子の結びつきが強くなりすぎてしまいます。後から親のコードを少し変更しただけで、子プログラムが連鎖的に壊れてしまうリスクがあります。

日常で出会う場面

  1. 基本キャラクターの設計図を継承して、魔法使い、戦士、弓使いといったキャラクターを作るときに使われます。

  2. 基本的なボタンの機能を継承し、クリックすると光るアニメーション効果を加えた特殊なボタンを作るときに使われます。

つまり ひとことで

継承とは、既存の設計図(クラス)の機能や特徴を引き継ぎ、コードの重複を減らして効率的に新しい設計図を作るオブジェクト指向プログラミングの技術です。ただし、過度に使用すると結合度が高くなり、かえって修正が難しくなる点には注意が必要です。

作成 2026-01-13 更新 2026-10-12 検証 2026-10-12