ココでわかるAndroidアプリ開発

あなたのプログラミングを徹底サポート

【Java】interface(インターフェース)とは - 使い方など紹介

  • 作成日:2022/01/20

初心者向けにインターフェースについて解説します。

インターフェースとは

interface(インターフェース)とは値やメソッドをもったもので、クラスに新たな機能を付加したいときなどに継承して使います。

クラスの継承と似ていますが、インターフェースは具体的な内容を記述できません。 普通のクラスとは以下の点で異なります。

  • 変数は定義できず、定数のみ
  • 関数は宣言だけ。処理内容は記述できない

通常のクラスはメンバー変数や関数の処理内容まで記述できますが、 インターフェースでは定数や関数の形式だけしか宣言できません。 例を見てみましょう。

App.java

//インターフェースの宣言
interface Inter{
    int a = 1;
    void out();
}

//クラスの宣言
class SampleClass{
    int a;
    void out(){
        System.out.println(a);
    };    
}

インターフェースで宣言した変数は必ず「public static final」がついているとみなされるので、定数となります。 4行目のように省略してもOKです。

また、5行目のようにインターフェース内での関数宣言は形だけにしておいて、処理まで記載してはいけません。

使い方

宣言したインターフェースはimplementsで継承して使います。

App.java

//インターフェースの宣言
interface Inter{
    void out();
}
//インターフェースを継承して使う
class SampleClass implements Inter{
    public void out(){
        System.out.println(a);
    };    
}

継承したインターフェースで宣言されている関数は必ず処理を記載しなければなりません。 上の例だと、4行目でout関数がインターフェース内で宣言されているので、このインターフェースを継承したら、 out関数の処理内容を記述する必要があります。(8~10行目)

複数のインターフェース

クラスでは複数の継承はできませんが、インターフェースは複数の継承が可能です。

App.java

//インターフェースの宣言①
interface Inter1{
    void out1();
}
//インターフェースの宣言②
interface Inter2{
    void out2();
}
//インターフェースを複数継承して使う
class SampleClass implements Inter1,Inter2{

    public void out1(){
        System.out.println("Sample1");
    };    
    public void out2(){
        System.out.println("Sample2");
    };    
}

複数のインターフェースを継承する場合は11行目のようにカンマで区切って指定します。

13~17行目のように、継承したインターフェースの関数は全て書かなければいけませんので、忘れないようにしましょう。

型について

インターフェースを実装したクラスは、そのインターフェースの型を使うことができます。 言葉だとわかりにくいですね。例を見ましょう。

App.java

//インターフェースの宣言
interface Inter{
    void out();
}
//クラスの宣言
class SampleClass implements Inter{
    public void out(){
        System.out.println("sample");
    };    
}
public class App {
    public static void main(String[] args) {        
                
        //クラスの型
        SampleClass tmp1 = new SampleClass();
        tmp1.out();

        //インターフェースの型
        Inter tmp2 = new SampleClass();
        tmp2.out();       
    }
}

16行目と20行目に注目してください。どちらもSampleClassのインスタンスを生成しているのですが、代入する型が違います。 16行目はSampleClass型ですが、20行目はInter型に代入しています。

SampleClassはInter型のインターフェースを継承しているので、Inter型にしても使えるのです。

このように、インターフェースを継承したクラスは、継承したインターフェースの型を使うことができるのです。

この記事のシェアはこちらから

カテゴリー

カテゴリーの一覧です。

Contact

当サイトへのご連絡は以下よりお願いします。

© Copyright 2022 ココでわかるAndroidアプリ開発