【Java Silver完全対策】挫折しない!継承・インターフェース・ポリモーフィズムを超わかりやすく解説

Java Silver対策の解説イラスト。猫と犬のキャラクターが、動物(Animal)クラスからの「継承」や「インターフェース」「ポリモーフィズム」の概念を分かりやすい図解で学んでいる様子。

Java Silverの学習を進めていくと、必ずぶつかる大きな壁があります。それが「継承」「インターフェース」「ポリモーフィズム」というオブジェクト指向の重要概念です。

漢字やカタカナが並んでいて難しそうに感じますが、実はプログラミングの世界を「より便利に、より効率的に」するための単なるルールに過ぎません。

この記事では、完全未経験の方でも腹落ちするように、図解を交えながら(※ここに作成したアイキャッチや図解を挿入)Java Silver試験で問われるポイントに絞って解説します。

目次

1. 継承(Inheritance)とは? 〜既存の設計図を使い回す〜

継承とは、「すでにあるクラス(設計図)の機能を引き継いで、新しいクラスを作ること」です。

ゼロからすべてのコードを書くのは大変なので、「共通する部分は親からもらい、違う部分だけ子で新しく書こう」という効率化の仕組みです。

  • 親クラス(スーパークラス): 元となる基本のクラス
  • 子クラス(サブクラス): 親を引き継いで、新しく作るクラス

記述方法とルール

Javaでは、継承を行う際に extends(拡張する)というキーワードを使います。

Java

// 親クラス
class Animal {
    void eat() {
        System.out.println("ご飯を食べます");
    }
}

// 子クラス(Animalクラスを継承)
class Dog extends Animal {
    void bark() {
        System.out.println("ワンと鳴きます");
    }
}

この場合、Dogクラスは自分でeat()メソッドを書いていなくても、Animalクラスを継承しているためeat()を使うことができます。

👑 Java Bronzeの頻出ポイント

  • 単一継承の原則: Javaでは、親クラスは1つしか選べませんclass Dog extends Animal, Pet のような複数の継承はコンパイルエラーになります)。
  • メソッドのオーバーライド: 親クラスが持っているメソッドを、子クラスで「上書き」して中身を変更することができます。

2. インターフェース(Interface)とは? 〜絶対に守るべきルールブック〜

継承が「機能の引き継ぎ」だとすれば、インターフェースは「この機能(メソッド)を必ず実装しなさい、というルールの強制」です。

例えば、「スマートフォン」というインターフェースがあった場合、「電話をかける」「インターネットを見る」という機能は絶対に必要ですよね。iPhoneでもAndroidでも、中身の仕組み(処理)は違いますが、この「ルール」は共通して守っています。

記述方法とルール

インターフェースをクラスに適用(実装)するには implements というキーワードを使います。

Java

// インターフェース(ルールの定義)
interface Smartphone {
    void call(); // 処理の中身は書かない!
}

// インターフェースを実装するクラス
class iPhone implements Smartphone {
    // ルールに従って、必ずメソッドの中身を書く必要がある
    public void call() {
        System.out.println("FaceTimeオーディオで電話します");
    }
}

👑 Java Silverの頻出ポイント

  • 多重実装が可能: 継承(extends)は1つだけでしたが、インターフェース(implements)は複数同時に実装することができます(例:class iPhone implements Smartphone, Camera)。
  • 抽象メソッド: インターフェースに定義されるメソッドは、基本的に「名前と戻り値」だけで、具体的な処理({ }の中身)を持ちません。これを抽象メソッドと呼びます。

3. ポリモーフィズム(多態性)とは? 〜柔軟な箱と中身の関係〜

言葉が一番難しそうに見えますが、Java Silverで最もよく出題され、かつスコアの差がつく最重要項目です。

ポリモーフィズムとは、「同じ指示を出しても、中身(オブジェクト)によって違う動きをする」という性質のことです。これを理解するには、「変数(箱)」と「インスタンス(中身)」を分けて考えるのがコツです。

箱(型)と中身(インスタンス)は違っていい

通常、クラスからインスタンスを作るときは左右同じ名前を書きます。

Java

Dog myDog = new Dog(); // 箱も中身もDog

しかし、ポリモーフィズムを使うと、「親クラスの箱(型)」に「子クラスの中身(インスタンス)」を入れることができます。

Java

Animal myAnimal = new Dog(); // 箱はAnimal、中身はDog

なぜこんなことをするのでしょうか?それは、「どんな動物(DogでもCatでも)が来ても、まとめてAnimalとして扱えるようにするため」です。

👑 Java Silverの頻出ポイント:ここが試験に出る!

以下のコードを見たとき、どこでエラーが起きるか(またはどう動くか)を判定する問題が頻出します。

Java

Animal a = new Dog();

a.eat();  // ① 実行できる?
a.bark(); // ② 実行できる?
  • a.eat(); → 実行できる!呼び出せるメソッドは「箱(左側の型)」で決まります。箱はAnimalなので、Animalクラスにあるeat()は呼べます。もしDogクラスでeat()をオーバーライド(上書き)していれば、Dog側の処理が実行されます。
  • a.bark(); → コンパイルエラー!箱(型)はあくまでAnimalです。Animalクラスの設計図にはbark()(吠える)という機能は書かれていないため、いくら中身がDogであっても呼び出すことはできません。

【鉄則】「呼べるか・呼べないか」は左側(型)を見る。「どう動くか」は右側(中身)を見る。

まとめ:Java Silver合格へ向けて

これら3つの概念は繋がっています。

概念キーワード役割Bronze試験でのポイント
継承extends共通部分の使い回し親は1つだけ(単一継承)。コンストラクタの動きに注意。
インターフェースimplementsルールの統一・強制複数実装できる。中身のないメソッドを定義する。
ポリモーフィズム親型 変数 = new 子()柔軟な処理の実現「型(左)」で呼べるか決まり、「中身(右)」で動きが決まる。

最初は「なんのためにこんな面倒なルールがあるの?」と思うかもしれません。しかし、Java Bronzeの問題集(黒本や紫本)で実際のコードの動きを追っていくと、「なるほど、こうすれば後からコードを修正するのが楽になるのか!」と点と点が繋がる瞬間が必ず来ます。

まずはこの基本ルールを暗記し、問題集の解説と照らし合わせながら学習を進めていきましょう!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

tibiyaのアバター tibiya ITエンジニア

文系卒エンジニア(8年目)
Java / JavaScript / C# を中心に業務システム開発を経験。
Java資格・IT就活・文系エンジニアの実体験を発信しています。

コメント

コメントする

目次