Javaの「extends」ってなに?クラスをパワーアップさせる「型抜き」の魔法を徹底解説!

Javaのextends(継承)の仕組みを「たいやき」に例えて解説した図解イラスト。親クラス(普通のたいやき)から子クラス(チョコたいやき)へ機能が拡張・コピーされる流れを表しています。
  • URLをコピーしました!
今回の記事の目的
  • Javaの最重要ワード「extends(継承)」の正体を完璧に理解する
  • なぜextendsが必要なのか、その圧倒的なメリットを理解する
  • extendsに関する英語フレーズを習得する
ワタタク

どうも上達の研究家のワタタクです。

Javaの勉強を進めていると、クラス名の後ろに急にくっついてくるこの言葉。

public class SuperParticle extends Particle { ... }

参考書を開くと、「継承とは、既存のクラスの属性とメソッドを子クラスに引き継ぎ…」なんてフリーズ必須の解説が書かれていますが、中身はめちゃくちゃシンプルです!

今回も僕たちの日常にある「あるもの」に例えて、小学生でも一発で納得できるようにバラバラに解体(デバッグ)していきましょう!

この記事を書いた人

クリエイティブコーダー Watataku のプロフィール写真
ワタタク(Watataku)

上達の研究家 / アーティスト

「才能」ではなく「発見」で描く。文系・36歳からの上達ハック。

  • ゼロから独学でクリエイティブコーディングに挑戦し、以下の実績を達成
    • 開始1年8ヶ月目までに公募6つに挑戦し、3つ入選(勝率50%)
      • KITTE大阪の18メートルあるAxCROSS大型スクリーン
      • 虎ノ門ヒルズステーションタワーB2F TOKYO NODE エントランスサイネージで展示
      • UN:O(東京大手町)にある会員限定のサテライトオフィスにて2作品常設展示
  • 開始1年9ヶ月目に、虎ノ門ヒルズ49階、地上250mのインフィニティプールへ作品提供・展示
  • 実際の展示作品と動画、音楽やSEOでの実績はポートフォリオに載せております→https://my-portfolio-blue-three-63.vercel.app/works
目次

「extends」って、一言でいうとナニ?

extendsを一言でいうと、「すでにあるプログラム(元の形)をそのままコピーして、新しい機能を追加した『パワーアップ版プログラム』を作るための魔法の言葉」です!

英語の extends には「広げる」「拡張する」という意味があります。 プログラミングの世界では、この仕組みのことを難しい言葉で「継承(けいしょう)」と呼んでいます。

「たいやき」の型で考えてみよう!

あなたが「たいやき屋さん」を開くとして、普通のたいやき(あんこ入り)を作るプログラムを作ったとします。 商売が繁盛したので、新メニューとして「チョコたいやき」と「カスタードたいやき」も作りたくなりました。

もし extends を知らないと、あなたは「チョコ用」と「カスタード用」のプログラムを、またゼロから全く同じように書き直さなければいけません。これはめんどくさいですし、コードが散らかる原因になります。

そこで extends の出番です!

「新メニューの『チョコたいやき』は、普通のたいやきを extends(拡張) して作ります!」

こう宣言するだけで、普通のたいやきの「形(生地の焼き方やサイズ)」をそのまま一瞬でコピー(型抜き)して、中身を「チョコ」に変えるだけの最小限のコードで、新しいプログラムを爆速で作ることができるのです。

実際のコードで見るextendsのビフォーアフター

これまでのマトリョーシカ構造(関連記事:Javaの正体は「マトリョーシカ構造の本」?パッケージ・クラス・メソッドの入れ子関係を徹底図解!)を思い出してください。パッケージ(大箱) ➔ クラス(中箱)の中に、この上下関係が作られます。

① 元になる普通のプログラム(親クラス)

画面につぶつぶ(Particle)を描いて動かす、基本の Particle クラスです。

public class Particle {
    int x, y;
    
    public void move() {
        // まっすぐ動く処理
    }
}

② パワーアップさせたプログラム(子クラス)

元の Particle の機能をすべて引き継いだまま、新しく「キラキラ光る(flash)」という機能をプラスした NeonParticle を作ります。ここで extends を使います!

// Particleをベースにしてパワーアップさせるぞ!という宣言
public class NeonParticle extends Particle {
    
    // xやy、move()のコードは書かなくても自動でコピーされている!
    
    public void flash() {
        // ピカッと光る新しい処理(追加機能)
    }
}

なんと、新しく追加したい flash() メソッドを書くだけで完了です!元のプログラムに書いてあった xymove() は、裏側で自動的に引き継がれているため、書く必要がありません。コードが劇的にスッキリしますよね。

extendsを使ったコードで出てきた親クラスと子クラスの別の呼び方

親クラスをスーパークラス。

子クラスをサブクラスとも言います。

extendsの英会話の例

海外のテック企業では、この extends の関係性のことを「親子」ではなく、「Super(上司・元)」「Sub(部下・下位)」という言葉を使うみたいです。

1. 機能を拡張して新しいクラスを作りたいとき

A:基本のボタンクラスをベースにして、新しく「光るボタン」を作りたいんだけど。

B:じゃあ、元のボタンクラスをインポートして、それをextendsして新しいクラスを作ろう。

A: I want to create a “GlowButton” based on the basic button class.

B: Then, let’s import the original button class and extend it to make the new one.

2. 親クラス(元)を指すとき

A:NeonParticle の元になっているクラスってどれだっけ?

B:そのスーパークラス(親クラス)は Particle だよ

A: Which class is the base for “NeonParticle”?

B: Its superclass is the “Particle” class.

3. 子クラス(拡張版)を指すとき

A:この新しい機能を実装するために、サブクラス(子クラス)を新しく作るべきだね。

A : We should create a new subclass to implement this feature.

まとめ:楽をして安全に作るための「思いやり」

最後に、今回の脳内マッピングのおさらいです!

  • extends(継承): 元のプログラムをコピーしてパワーアップさせる魔法の呪文。
  • スーパークラス(親): ベースになる元のプログラム。
  • サブクラス(子): extendsして新しく作った拡張版プログラム。

プログラミングのルールって、一見難しそうですが、その本質は「過去の自分が頑張って作ったコード(たいやきの型)を無駄にせず、楽をして安全に次の作品を作るため」の、エンジニアたちの優しい知恵なんですね。

ワタタク

それでは今日もレッツワクワクコーディング。

ワタタク(Watataku)
上達の研究家 / アーティスト
独学1年9ヶ月で虎ノ門ヒルズ49階、地上250mのインフィニティプールへ作品提供・展示

言葉×コード×手書き。三位一体の表現が成長する過程の記録

【発信】クリエイティブコーディング(2024.3~) / 絵(2025.11~) / モレスキン / 思考法 / 生き方

▼運営者について
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次