平凡エンジニアによる平凡ブログ

平凡インフラエンジニアがスキルアップを目指してプログラミングやクラウドやサーバといったインフラのアウトプットをしていきます!

【Java】インターフェースの特徴をまとめてみよう

今回のテーマ

1Z0-815の試験対策でインターフェースの特徴をまとめてみた。

そもそもインターフェースとは

簡単な説明にすると

他のクラスに公開が必要なメソッドや定数をまとめたまとまりのこと

参考

インターフェース (1) 基本 | サイト構築日記

【Java入門】interface(インタフェース)の使い方総まとめ | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト

サンプルコードとまとめ

public interface Interface {
    void methodA();
    // 抽象メソッドとなる。暗黙的にpublic abstractがつく
    // その他アクセス修飾子はコンパイルエラーになる。

    default void methodB() {
        System.out.println();
    }
    // 具象メソッドとしてデフォルトメソッドが定義可能
    // アクセス修飾子は明示していないと自動的にpublic
    // protectedは不可、privateは可能

    public static void methodC() {
        System.out.println();
    }
    // staticメソッドも定義可能
    int a=0;
    // フィールドにはpublic static finalがつく。初期化しないとコンパイルエラー
    // 再定義はfinalがついているから不可
}

interface SubInterface extends Interface {
    // インターフェイスを継承する際はimplementsではなくextendsでいい
    // 複数インターフェイスの継承も可能
}
試験ポイントまとめと考えられる出題方式

最後にインターフェースの特徴と考えられる出題のされ方を考えてみた
※実際に問題集でも出題あり
〇は特徴、→で出題のされ方を書いています。

〇インターフェースに定義できるメソッドは3つ
・抽象メソッド
・staticメソッド
・デフォルトメソッド
→選択問題でインターフェースは抽象メソッドしか定義できない×

〇抽象メソッド
・アクセス修飾子がない場合、「public abstract」がつく
→別の拡張子がついているとコンパイルエラー
→アクセス修飾子がないメソッドがオーバライドされている場合
オーバライドされているメソッドのアクセス修飾子は必ずpublicである必要

〇デフォルトメソッド
・protectedは不可、privateは設定可能
→インターフェースの抽象メソッドにprotectedを設定していると
コンパイルエラー

→インターフェースの抽象メソッドにprivateは問題なし

〇インターフェースのフィールド
・必ずpublic static finalがついている
→初期化しないとコンパイルエラー →finalがついているので再定義できない

〇インターフェースの継承
・インターフェースで、別のインターフェースを継承する場合はextendsでOK ・,で複数インターフェースも指定して継承が可能
→インターフェース同士の継承をimplementsで実行している×
→選択肢でインターフェースは複数継承できない×

まとめ

まだまだあるのかもしれないですが、試験対策としてはおそらく上記のような 出題ポイントになるかと思います。

インターフェースは特徴としては他のクラスからも公開するのがそもそもの役割でもあるので その特徴に照らせば、なんとなくわかるがまだ初学者の私ではそこまでイメージできず 問題では撃沈してました。

あらためてまとめると少し特徴が理解できたように思えます。

学習文献