インターフェイスはJavaの参照型です。 それはクラスに似ています。 これは抽象メソッドのコレクションです。 クラスインタフェースを実装する継承の抽象メソッドのインタフェース。
抽象メソッドとともに、インターフェイスには定数、デフォルトメソッド、静的メソッド、ネストされた型も含まれます。 法体の存在のためのデフォルトの方法および静的ます。,
インターフェイスを書くことは、クラスを書くことに似ています。 しかし、クラスはオブジェクトの属性と動作を記述します。 インターフェイスには、クラスが実装する動作が含まれ
インターフェイスを実装するクラスが抽象クラスでない限り、インターフェイスのすべてのメソッドをクラスで定義する必要があります。
インターフェイスは次の方法でクラスに似ています−
-
インターフェイスには任意の数のメソッドを含めることができます。
-
インターフェイスは、aを持つファイルに書き込まれます。ファイルの名前と一致するインターフェイスの名前を持つjava拡張子。,
-
インターフェイスのバイトコードはaに表示されます。クラスファイル。
-
インターフェイスはパッケージに表示され、対応するバイトコードファイルはパッケージ名と一致するディレクトリ構造になければなりません。
ただし、インターフェイスはクラスとはいくつかの点で異なります。−
-
インターフェイスをインスタンス化することはできません。
-
インターフェイスにはコンストラクタが含まれていません。
-
インターフェイス内のすべてのメソッドは抽象メソッドです。
-
インターフェイスインスタンスを含めることはできません。, インターフェイスに表示できるフィールドは、staticとfinalの両方で宣言する必要があります。
-
インタフェースはクラスによって拡張されるのではなく、クラスによって実装されます。
-
インターフェイスは複数のインターフェイスを拡張できます。
インターフェイスの宣言
インターフェイスキーワードは、インターフェイスを宣言するために使用されます。 ここでは、インターフェイスを宣言するための簡単な例です−
例
以下は、インターフェイスの例です−
インターフェイスは、次のプロパティを持っています−
-
インターフェイ, すを使用する必要はありませんの抄録キーワードを宣言するインターフェース。
-
インターフェイス内の各メソッドも暗黙的に抽象であるため、abstractキーワードは必要ありません。
-
インターフェイス内のメソッドは暗黙的にパブリックです。
例
/* File name : Animal.java */interface Animal { public void eat(); public void travel();}
インターフェイスの実装
クラスがインターフェイスを実装するとき、クラスは契約に署名し、インターフェイスの特定の動作を実行することに同意したものと考えることができます。 クラスがインターフェイスのすべての動作を実行しない場合、クラスは自分自身を抽象として宣言する必要があります。,
クラスはimplementsキーワードを使用してインターフェイスを実装します。 Implementsキーワードは、宣言のextends部分の後にあるクラス宣言に表示されます。
Example
これは次の結果を生成します−
Output
Mammal eatsMammal travels
インターフェイスで定義されたメソッドをオーバーライドする場合、従うべきいくつかのルールがあります−
-
チェックされた例外は、インターフェイスメソッドで宣言されたものまたはインターフェイスメソッドで宣言されたもの以外の実装メソッドまたはインターフェイスメソッドで宣言されたもののサブクラス以外の実装メソッドで宣言されるべきではありません。,
-
メソッドをオーバーライドするときは、インターフェイスメソッドのシグネチャと同じ戻り値の型またはサブタイプを維持する必要があります。
-
実装クラス自体は抽象クラスにすることができ、実装されている場合はインターフェイスメソッドを実装する必要はありません。
実装インターフェイスは、いくつかのルールがあります−
-
クラスは、一度に複数のインターフェイスを実装することができます。
-
クラスは一つのクラスしか拡張できませんが、多くのインターフェイスを実装できます。
-
インターフェイスは、クラスが別のクラスを拡張できるのと同様の方法で、別のインターフェイスを拡張できます。,
インターフェイスの拡張
インターフェイスは、クラスが別のクラスを拡張できるのと同じ方法で別のインターフェイスを拡張できます。 の伸びのキーワード利用の拡張インターフェースは、子の界面を継承方法親会社のインタフェース。
以下のスポーツインタフェースの拡張によるホッケーやサッカーインタフェース
Example
Hockeyインターフェイスには四つのメソッドがありますが、Sportsから二つを継承しています。, 同様に、Footballを実装するクラスは、Footballの三つのメソッドとSportsの二つのメソッドを定義する必要があります。
複数のインタフェースの拡張
Javaクラスは親クラスのみを拡張できます。 多重継承は許可されていません。 ただし、インターフェイスはクラスではなく、インターフェイスは複数の親インターフェ
extendsキーワードは一度使用され、親インターフェイスはカンマ区切りのリストで宣言されます。,
たとえば、ホッケーインターフェイスがスポーツとイベントの両方を拡張した場合、−
Example
public interface Hockey extends Sports, Event
タグ付けインターフェイス
拡張インターフェイスの最も一般的な使用は、親インターフェイスにメソッドが含まれていない場合に発生します。 たとえば、javaのMouseListenerインターフェイスです。awt.イベントパッケージ拡張java。ユーティルEventListenerは、-
Example
package java.util;public interface EventListener{}
メソッドを含まないインターフェイスは、タグ付けインターフェイスと呼ばれます。, EventListenerインタフェースは、Java APIの他の数十のインタフェースによって拡張されているのと同じように、タグ付けインタフェースを使用して、インタフェースのグループ間で共通の親を作成することができます。 たとえば、インターフェイスがEventListenerを拡張する場合、JVMはこの特定のインターフェイスがイベント委任シナリオで使用されることを認識します。
クラスにデータ型を追加します−この状況は、タグ付けという用語が由来する場所です。, タグ付けインターフェイスを実装するクラスは、メソッドを定義する必要はありません(インターフェイスにはメソッドがないため)が、クラスは多態性