Javaインタフェース
インタフェース(英語:Interface)は、Javaプログラミング言語の抽象型で、インタフェースは通常、ステートメントにインタフェース、抽象メソッドのコレクションです。 インターフェイスモードを継承したクラスは、それによって、抽象メソッドのインターフェースを継承します。
インターフェイスはクラスではない、と準備インターフェイスにクラスアプローチは非常に似ていますが、それらは異なる概念に属しています。 クラスは、オブジェクトのプロパティとメソッドについて説明します。 インタフェースを実装する方法のクラスが含まれています。
インターフェースクラスの実装は、クラスのインターフェイスにすべてのメソッドを定義する抽象的、または他のでない限り。
インタフェースはインスタンス化することはできませんが、それを実現することができます。 インタフェースを実装するクラスは、インターフェイスに記載されているすべての方法は、それ以外の場合は、抽象クラスとして宣言する必要があり、実装する必要があります。 また、Javaで、インタフェース型変数を宣言するために使用され、それらはNULLポインタになることができ、またはこのインタフェースのオブジェクトにバインドされています。
クラスのポイントと同様のインターフェース:
- インターフェイスは、複数のメソッドを持つことができます。
- インターフェイスの.javaファイルは、ファイル、インターフェイス名を使用して、ファイル名の末尾に保存されます。
- バイトコードファイルインターフェイスはの.classで終わるファイルに保存されます。
- パッケージ名を持つバイトコードファイルを対応するインタフェースは、ディレクトリ構造と一致する必要があります。
- インターフェースは、オブジェクトをインスタンス化するために使用することができません。
- インタフェースはコンストラクタではありません。
- すべてのインターフェイスメソッドは抽象メソッドでなければなりません。
- インターフェイスは、静的および最終的な変数に加えて、メンバ変数を含めることはできません。
- インターフェイスは、クラスによって継承されますが、クラスが実現することですされていません。
- インターフェイスは多重継承をサポートしています。
インターフェイス宣言
インタフェース宣言の構文は次のとおりです。
[可见度] interface 接口名称 [extends 其他的类名] { // 声明变量 // 抽象方法 }
interfaceキーワードは、インターフェイスを宣言するために使用されます。 ここではインタフェース宣言の簡単な例です。
/* 文件名 : NameOfInterface.java */ import java.lang.*; //引入包 public interface NameOfInterface { //任何类型 final, static 字段 //抽象方法 }インターフェイスは、次の機能があります。
- 必要のない抽象的なキーワードを使用するときのインタフェースを宣言する際のインタフェースは、暗黙的に抽象的です。
- 各インターフェイスメソッドは抽象宣言は同じキーサブを必要とせず、暗黙的に抽象的です。
- インタフェースメソッドは、公開されています。
例
/* 文件名 : Animal.java */ interface Animal { public void eat(); public void travel(); }
インタフェースの実装
クラスは、インターフェイスクラスインターフェイスを実装すると、すべての方法が実現しています。 そうしないと、クラスは抽象クラスとして宣言する必要があります。
使用して、インターフェイスを実装するキーワードクラスを実装します。 クラス宣言では、クラス宣言の後ろにキーワードを実装します。
インターフェイスの構文を実装するには、次の式を使用することができます。
... implements 接口名称[, 其他接口, 其他接口..., ...] ...
例
/* 文件名 : MammalInt.java */ public class MammalInt implements Animal{ public void eat(){ System.out.println("Mammal eats"); } public void travel(){ System.out.println("Mammal travels"); } public int noOfLegs(){ return 0; } public static void main(String args[]){ MammalInt m = new MammalInt(); m.eat(); m.travel(); } }
次のような結果をコンパイルした上記の例は次のとおりです。
Mammal eats Mammal travels
インタフェースで宣言されたメソッドをオーバーライドする場合は、次のルールに注意を払う必要があります。
- クラスインターフェイスのメソッドを実装する場合、あなただけのインターフェイスで、必須の例外をスロー、または必須の例外をスロー抽象クラスのインターフェイスを継承することはできません。
- 一貫性のあるメソッド名を維持するために、同じまたは互換性の戻り値の型とどまるべき書き換えクラス。
- インターフェースクラスの実装が抽象である場合、インターフェースのメソッドを実装する必要はありません。
インタフェースの実装時には、だけでなく、いくつかのルールに注意を払います:
- クラスは複数のインターフェイスを実装することができます。
- クラスは1つしか継承することができますが、複数のインターフェイスを実装することができます。
- インターフェイスは別のインターフェイス、および同様の比較を継承するクラスを継承することができます。
継承インタフェース
インターフェイスは、クラスや継承の間に、より類似した別のインターフェースを継承することができます。 継承インターフェイスは、キーワードサブインターフェイスは親インターフェイスのメソッドを継承拡張します。
ホッケーとサッカーのインターフェイスは、次のインタフェースは、スポーツを継承されます。
// 文件名: Sports.java public interface Sports { public void setHomeTeam(String name); public void setVisitingTeam(String name); } // 文件名: Football.java public interface Football extends Sports { public void homeTeamScored(int points); public void visitingTeamScored(int points); public void endOfQuarter(int quarter); } // 文件名: Hockey.java public interface Hockey extends Sports { public void homeGoalScored(); public void visitingGoalScored(); public void endOfPeriod(int period); public void overtimePeriod(int ot); }
自身は4つのメソッドを宣言ホッケーインタフェース、インタフェースはそうクラスインターフェイスホッケー6つのメソッドを実装する必要性を実現するために、スポーツからの2つのメソッドを継承します。
同様に、インタフェースの実装クラスのサッカーはスポーツインターフェイスから2を含む5つのメソッドを実装する必要があります。
多重継承インターフェイス
Javaでは、多重継承クラスが有効ではありませんが、インターフェイスは多重継承を許可します。
多重継承のインターフェイスでは、その後のフォロー継承インタフェースで、一度だけのキーワードを拡張します。 次のように:
public interface Hockey extends Sports, Event
上記のプログラムの一部は、法的に定義するか、または同様の方法を継承することができるインターフェイスは、複数の継承を可能にするクラス、およびスポーツイベントとは異なり、サブインターフェイスを定義されています
マーカーインタフェース
最も一般的な遺伝インターフェイスは、インターフェイスの任意のメソッドが含まれていません。
これは、インタフェースがインタフェースのメソッドとプロパティではありません示しています。それは、単にそれが何かをすることができ、テストに他のコードのクラスの特定のタイプに属していることを示しています。
(スタンプをビルド)のマークを作る、またはオブジェクトが特定の権限を持つようにすることである物体の単純な画像:インタフェースの役割を識別します。
たとえば、次のようにjava.awt.eventのパッケージのMouseListenerインターフェイスの継承されたjava.util.EventListenerインタフェースが定義されています。
package java.util; public interface EventListener {}
インターフェイスは、マーカーインターフェイスと呼ばれている方法はありません。 マーカーインタフェースは、主に2つの目的のために使用されます。
- 共通の親インタフェースの確立:
他のインタフェース拡張機能Java APIの数十から構成されているEventListenerインターフェースとして、あなたは親インターフェイスのインターフェイスのセットを確立するために、マーカーインターフェイスを使用することができます。 たとえば、次のインターフェースは、イベント・エージェントのプログラムに使用されるインターフェイスを知っているイベントリスナーインターフェース、Java仮想マシン(JVM)を継承します。
- クラスのデータ型に追加します:
この状況は、多型を介してタグ機能インタフェース本来の目的である、マーカーインターフェイスを実装するクラスは、任意のインターフェイスのメソッドを定義する必要はありません(マーカーインターフェイスは、単に方法はありませんように)が、インタフェース型へのクラス。