カテゴリ: Javaのインターフェース 更新日: 2026/04/27

Javaのimplementsキーワードの使い方を完全ガイド!インターフェース実装を初心者向けに解説

340
Java の implements キーワードを使ってインターフェースを実装しよう

先生と生徒の会話形式で理解しよう

生徒

「Javaのインターフェースって、どうやって使うんですか?クラスに何か書かないといけないんですか?」

先生

「Javaでは、インターフェースを使うにはimplementsというキーワードを使ってクラスに実装する必要があるよ。」

生徒

「implements?extendsとは違うんですか?」

先生

「いいところに気づいたね。implementsとextendsは使い方が違うんだ。今日はJavaのimplementsキーワードについて詳しく説明するよ!」

1. Javaのimplementsとは?

1. Javaのimplementsとは?
1. Javaのimplementsとは?

Javaのimplementsは、インターフェースをクラスに実装するときに使うキーワードです。Javaでは、クラスがインターフェースの仕様に従ってメソッドを実装する場合、implementsを使います。

このキーワードは、インターフェースの抽象メソッドをクラスで定義するときに必要になります。Javaでは、1つのクラスが複数のインターフェースをimplementsすることも可能です。

2. Javaでインターフェースを実装する基本構文

2. Javaでインターフェースを実装する基本構文
2. Javaでインターフェースを実装する基本構文

Javaのimplementsの基本構文は以下のようになります。


public interface Animal {
    void speak();
}

public class Dog implements Animal {
    @Override
    public void speak() {
        System.out.println("ワンワン!");
    }
}

Dogクラスは、Animalインターフェースをimplementsしており、speak()メソッドの中身を自分で定義しています。インターフェースのメソッドは抽象メソッドなので、必ずオーバーライド(上書き)する必要があります。

3. Javaで複数のインターフェースを実装する方法

3. Javaで複数のインターフェースを実装する方法
3. Javaで複数のインターフェースを実装する方法

Javaのクラスは、複数のインターフェースを同時にimplementsすることが可能です。これは、Javaが「多重継承」をインターフェースで実現するための仕組みです。


public interface Flyable {
    void fly();
}

public interface Swimmable {
    void swim();
}

public class Duck implements Flyable, Swimmable {
    @Override
    public void fly() {
        System.out.println("バサバサと空を飛ぶ");
    }

    @Override
    public void swim() {
        System.out.println("スイスイと泳ぐ");
    }
}

バサバサと空を飛ぶ
スイスイと泳ぐ

DuckクラスはFlyableSwimmableの2つのインターフェースを実装しており、それぞれのメソッドを自分で定義しています。

Javaをこれから始める人や、 オブジェクト指向の考え方を基礎から理解したい人には、 定番の入門書がこちらです。

スッキリわかるJava入門 第4版をAmazonで見る

※ Amazon広告リンク

4. Javaのimplementsとextendsの違い

4. Javaのimplementsとextendsの違い
4. Javaのimplementsとextendsの違い

Javaでは、extendsはクラスの継承、implementsはインターフェースの実装に使います。次のような違いがあります。

  • extends:1つの親クラスだけを継承可能(単一継承)
  • implements:複数のインターフェースを実装可能(多重実装)

そのため、柔軟な設計や拡張性のあるコードを目指す場合には、インターフェースとimplementsの活用が非常に重要です。

5. 実際のJavaコードでimplementsを使ってみよう

5. 実際のJavaコードでimplementsを使ってみよう
5. 実際のJavaコードでimplementsを使ってみよう

以下はJavaのimplementsキーワードを使って、インターフェースを実装する完全な例です。


public interface Calculator {
    int add(int a, int b);
    int subtract(int a, int b);
}

public class SimpleCalculator implements Calculator {
    @Override
    public int add(int a, int b) {
        return a + b;
    }

    @Override
    public int subtract(int a, int b) {
        return a - b;
    }
}

public class Main {
    public static void main(String[] args) {
        Calculator calc = new SimpleCalculator();
        System.out.println("加算結果: " + calc.add(5, 3));
        System.out.println("減算結果: " + calc.subtract(5, 3));
    }
}

加算結果: 8
減算結果: 2

このように、Javaではインターフェースを使って、仕様に基づいた柔軟な実装が可能になります。

6. implementsを使うときの注意点

6. implementsを使うときの注意点
6. implementsを使うときの注意点

Javaでimplementsを使うときの注意点をいくつか紹介します。

  • すべての抽象メソッドをオーバーライドする必要がある
  • クラスがabstractの場合は、オーバーライドしなくてもOK(そのサブクラスで実装すればよい)
  • defaultメソッドやstaticメソッドは実装しなくてもOK

たとえば、以下のようなdefaultメソッドがある場合:


public interface Logger {
    default void log(String message) {
        System.out.println("ログ: " + message);
    }
}

log()メソッドはそのまま使うことができますが、必要であればオーバーライドも可能です。

7. Javaの開発現場でも使われるimplementsの実例

7. Javaの開発現場でも使われるimplementsの実例
7. Javaの開発現場でも使われるimplementsの実例

実際のJava開発では、ListRunnableなど、さまざまな標準インターフェースをimplementsすることがあります。たとえば、スレッド処理で有名なRunnableの実装は以下のようになります:


public class MyTask implements Runnable {
    @Override
    public void run() {
        System.out.println("別スレッドで処理中");
    }
}

このように、Javaの世界ではimplementsが非常によく使われています。インターフェースとimplementsの理解は、Javaプログラミングにおいて欠かせない要素です。

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Javaの「implements」というキーワードにはどのような役割がありますか?初心者にもわかりやすく教えてください。

Javaの「implements」は、インターフェースで定義された「型」や「振る舞いのルール」を、実際のクラスに適用(実装)するために使用する非常に重要なキーワードです。Javaプログラミングにおいて、インターフェースは具体的な処理内容を持たない「設計図」のような役割を果たしますが、その設計図に基づいて具体的なプログラムコードを記述する際に「このクラスはこのインターフェースのルールに従います」と宣言するのがimplementsの役割です。このキーワードを使用することで、Javaのクラスに対して特定のメソッドを実装することを強制し、プログラム全体の統一感を保つことができます。
Javaのインターフェースの一覧へ
新着記事
Flutter
Flutterでのリポジトリパターンの実装例
Flutterでリポジトリパターンを実装する方法を完全解説!初心者向けアーキテクチャ設計入門
Java
Java の Objects クラスを使って null チェックを簡単にする方法
JavaのObjectsクラスの使い方を完全ガイド!nullチェックを簡単・安全に行う方法
Java
Java の UUID クラスを使って一意の識別子を作成する方法
JavaのUUIDクラスの使い方を完全ガイド!初心者でもわかる一意な識別子の作成方法
Java
Java の古い日付クラス(Date, Calendar)と新しい日付 API の違い
JavaのDateとCalendarと新しい日付APIの違いとは?初心者向け完全ガイド
人気記事
Java
Java の Random クラスを使ってランダムな数値を生成する方法
JavaのRandomクラスの使い方を完全ガイド!初心者でもわかる乱数生成
Java
Java の getter メソッドと setter メソッドの使い方
Javaのgetterメソッドとsetterメソッドの使い方を完全ガイド!初心者でもわかるアクセス方法
AWS
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
AWS
【AWS】VPCとは?初心者向けに仕組み・用途・できることをわかりやすく解説
【AWS】VPCとは?初心者向けに仕組み・用途・できることをわかりやすく解説

🔌 USBポート不足を解消

Type-C 1本で拡張。
開発・作業環境を一気に快適に

UGREEN USB-Cハブを見る

※ Amazon広告リンク