LoginSignup
1
1

Javaのインタフェースについて

Posted at

特徴

・インスタンス化はできず、利用する場合は実現クラスを作成する。
・実現クラスを定義するときは「implements」を利用する。
・実現クラスではインタフェース内の抽象メソッドをオーバーライドして利用する。
・サブインタフェースを作成する場合は「extends」を利用する。

変数

暗黙的に「public static final」修飾子が付与される。
変数宣言時に初期化しておく必要がある。

interface InterfaceA {
int a = 1;
int b; // 初期化していないためコンパイルエラー
private int c = 2; //privateのためコンパイルエラー
}

抽象メソッド

・暗黙的に「public abstract」修飾子が付与される。
・実現クラスでオーバーライドする必要がある。
・実現クラスでオーバーライドする前提のため「final」修飾子は付与できない。

interface InterfaceB {
public int testA();
abstract int testB();
private int testC(); //privateのためコンパイルエラー
public static testD(); //staticのためコンパイルエラー
public final testE(); //finalのためコンパイルエラー
}

具象メソッド

・具象メソッドで付与できる修飾子は「private static」「public static」「public default」「private」である。
・Objectクラスの「toString()」「hashCode()」「equals(Object)」はdefaultメソッドとして定義できない。
・defaultメソッドは暗黙的に「public」修飾子が付与される。

interface InterfaceC {
private static int methodA(){return 1;};
public static int methodB(){return 2;};
public default int methodC(){return 3;};
private int methodD(){return 4;};
//public int methodE(){return 5;}; //publuc defaultでないためコンパイルエラー
//private default methodF(){return 6;}; //publuc defaultもしくはprivateのみでないためコンパイルエラー
}
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1