カテゴリ: Javaのインターフェース 更新日: 2025/09/15

Javaのinterfaceキーワードでインターフェースを定義する方法!初心者向け完全ガイド

338
Java の interface キーワードを使ってインターフェースを作る方法

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

生徒

「Javaのinterfaceって何ですか?どうやって使うんですか?」

先生

interfaceはJavaでインターフェースを定義するためのキーワードです。インターフェースを使うと、クラスに共通の動作を強制的に実装させることができますよ。」

生徒

「なるほど!じゃあ、自分でインターフェースを作るにはどうすればいいんですか?」

先生

「それでは、interfaceキーワードを使ってインターフェースを作る方法を、サンプルコード付きでしっかり解説していきましょう!」

1. Javaのinterfaceキーワードとは?

1. Javaのinterfaceキーワードとは?
1. Javaのinterfaceキーワードとは?

Javaにおけるinterface(インターフェース)とは、クラスが実装すべきメソッドの定義だけを集めた設計図のような存在です。インターフェースには実際の処理は書かず、どんなメソッドを持っておくべきかだけを定義します。

interfaceキーワードを使うことで、クラスに「このメソッドは必ず実装してね」と強制することができます。これにより、複数のクラス間で共通のルールや機能を持たせることができます。

2. interfaceキーワードの基本構文

2. interfaceキーワードの基本構文
2. interfaceキーワードの基本構文

Javaでインターフェースを定義するには、以下のようにinterfaceキーワードを使います。


interface インターフェース名 {
    戻り値の型 メソッド名();
}

たとえば、動物が持つ「鳴く」という動作をインターフェースとして定義する場合は、次のように書けます。


interface Animal {
    void speak();
}

3. interfaceをクラスで実装する方法

3. interfaceをクラスで実装する方法
3. interfaceをクラスで実装する方法

定義したインターフェースは、implementsキーワードを使ってクラスに実装します。インターフェースで定義されたすべてのメソッドは、必ずそのクラス内でオーバーライドする必要があります。


interface Animal {
    void speak();
}

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

    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.speak();
    }
}

ワンワン

このように、インターフェースを実装すると、クラスに共通の振る舞いを持たせることができ、コードの再利用性や保守性も高まります。

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

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

※ Amazon広告リンク

4. 複数のinterfaceを同時に実装する

4. 複数のinterfaceを同時に実装する
4. 複数のinterfaceを同時に実装する

Javaのクラスは1つのクラスしか継承できませんが、インターフェースは複数同時に実装することができます。これはJavaの大きな特徴のひとつです。


interface Walkable {
    void walk();
}

interface Swimmable {
    void swim();
}

public class Duck implements Walkable, Swimmable {
    public void walk() {
        System.out.println("ヨチヨチ歩く");
    }

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

    public static void main(String[] args) {
        Duck duck = new Duck();
        duck.walk();
        duck.swim();
    }
}

ヨチヨチ歩く
スイスイ泳ぐ

このように、interfaceを使えば、さまざまな機能を自由に組み合わせることが可能です。

5. interface内の定数とメソッドの扱い

5. interface内の定数とメソッドの扱い
5. interface内の定数とメソッドの扱い

Javaのインターフェースでは、変数は自動的にpublic static finalになり、メソッドはpublic abstractが暗黙的に付与されます。

たとえば次のように書いた場合でも:


interface Config {
    int MAX_COUNT = 100; // public static final が自動的に付く
    void reset();        // public abstract が自動的に付く
}

クラス側で実装するときは、以下のように書きます。


public class Counter implements Config {
    public void reset() {
        System.out.println("カウントをリセットしました。最大値は " + MAX_COUNT);
    }

    public static void main(String[] args) {
        Counter c = new Counter();
        c.reset();
    }
}

カウントをリセットしました。最大値は 100

定数もそのまま使用できますし、メソッドも必ずオーバーライドが必要です。

6. defaultメソッドで処理を定義する

6. defaultメソッドで処理を定義する
6. defaultメソッドで処理を定義する

Java 8以降、インターフェースでもdefaultメソッドを使って処理内容を定義できるようになりました。これは、後からインターフェースに機能を追加したい場合に便利です。


interface Printer {
    default void print(String msg) {
        System.out.println("出力: " + msg);
    }
}

public class ConsolePrinter implements Printer {
    public static void main(String[] args) {
        ConsolePrinter cp = new ConsolePrinter();
        cp.print("こんにちは");
    }
}

出力: こんにちは

defaultメソッドは必要に応じてオーバーライドも可能です。

7. interfaceを使う場面と設計のポイント

7. interfaceを使う場面と設計のポイント
7. interfaceを使う場面と設計のポイント

Javaのinterfaceを使うのは、以下のような場面が多いです。

  • 異なるクラスに同じ振る舞いを持たせたいとき
  • 外部ライブラリやAPIとの共通インターフェースを定義したいとき
  • オブジェクト指向の設計で、依存性を減らしたいとき
  • テスト時にモッククラスなどを簡単に差し替えたいとき

interfaceをしっかり理解すると、コードの保守性が大きく向上し、より柔軟で再利用しやすい設計ができます。

Javaのインターフェースの一覧へ
新着記事
FlutterのMVP・MVVMアーキテクチャの違いと使い分け
FlutterのMVP・MVVMアーキテクチャの違いと使い分けを初心者向けに解説!
オニオンアーキテクチャの基本とFlutterでの適用例
オニオンアーキテクチャの基本とFlutterでの適用例を初心者向けに解説
クリーンアーキテクチャとは?Flutterでの導入メリット
クリーンアーキテクチャとは?Flutterでの導入メリットをやさしく解説
【AWS】RDS for Oracleの特徴・できないこと・バージョン・料金まとめ
【AWS】RDS for Oracleの特徴・できないこと・バージョン・料金を初心者向けに徹底解説
人気記事
インスタンスタイプの料金比較と最適な選び方(最新2025年版)
AWSのインスタンスタイプの料金比較と最適な選び方【2025年最新版】
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説

🔌 USBポート不足を解消

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

UGREEN USB-Cハブを見る

※ Amazon広告リンク