オブジェクト指向プログラミングでは、クラスが何を実行するかを定義することは役に立ちますが、どのように実行するかは定義しません。
抽象メソッドは実装を提供せずにメソッドのシグネチャを定義し、サブクラスはそのメソッドを実装する必要があります。
Java インターフェースを使用すると、何を行うべきかの定義とそれを行う方法の実装を完全に分離できます。
インターフェイスでは本体なしでメソッドを指定できますが、これはクラスによって実装する必要があります。
インターフェイスを実装できるクラスの数に制限はなく、クラスは複数のインターフェイスを実装できます。
インターフェースを実装するには、クラスは記述されたメソッドの実装を提供する必要があります。
異なるクラスは同じインターフェースを異なる方法で実装できますが、同じメソッドのセットを共有します。
インターフェースを使用すると、異なるクラスのオブジェクトを互換的に扱うことができるため、ポリモーフィズムが可能になります。
JDK 8 では、インターフェースがメソッドのデフォルト実装を定義できる機能が導入され、インターフェースで動作を指定できるようになりました。
標準実装にもかかわらず、インターフェイスの本来の目的は、ほとんど変更されていないものだけを定義することです。
最初は従来のインターフェースに焦点を当て、章の最後で標準メソッドについて説明します。
アクセスインターフェース名 {
ret-type メソッド名1(param-list);
ret-type メソッド名 2(param-list);
タイプ var1 = 値;
タイプ var2 = 値;
// ...
ret-type メソッド名 N(param-list);
タイプ varN = 値;
}
インターフェイスへのアクセスは、パブリック アクセスまたは標準アクセス (パッケージ プライベート) のいずれかにすることができます。
アクセス修飾子が含まれていない場合、インターフェイスにはパッケージのメンバーのみがアクセスできます。
パブリックとして宣言すると、インターフェイスは任意のコードで使用でき、同じ名前のファイル内に存在する必要があります。
インターフェイス名には、任意の有効な識別子を使用できます。
従来の形式のインターフェイスでは、メソッドは戻り値の型とシグネチャのみで宣言され、本質的には抽象メソッドです。
このインターフェースを実装するクラスは、暗黙的にパブリックであるすべてのメソッドの実装を提供する必要があります。
インターフェース内の変数はインスタンス変数ではありません。これらは暗黙的に public、final、static であり、初期化する必要があります (定数です)。
インターフェース定義の例:
パブリック インターフェース シリーズ {
int getNext(); // シリーズの次の数値を返します
無効なリセット(); // 再起動
void setStart(int x); // 初期値を定義します
}
以上がインターフェースの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。