工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

Java-インターフェース

インターフェイスは Java の参照型です。クラスに似ています。抽象メソッドの集まりです。クラスはインターフェースを実装することで、インターフェースの抽象メソッドを継承します。

抽象メソッドに加えて、インターフェイスには、定数、既定のメソッド、静的メソッド、および入れ子になった型も含まれる場合があります。メソッド本体は、デフォルト メソッドと静的メソッドに対してのみ存在します。

インターフェイスの作成は、クラスの作成に似ています。しかし、クラスはオブジェクトの属性と動作を記述します。インターフェイスには、クラスが実装する動作が含まれます。

インターフェイスを実装するクラスが抽象クラスでない限り、インターフェイスのすべてのメソッドをクラスで定義する必要があります。

インターフェイスは、次の点でクラスに似ています-

ただし、インターフェイスは、以下を含むいくつかの点でクラスとは異なります-

インターフェースの宣言

インターフェース キーワードは、インターフェイスを宣言するために使用されます。インターフェイスを宣言する簡単な例を次に示します −

以下はインターフェースの例です −

/* File name : NameOfInterface.java */
import java.lang.*;
// Any number of import statements

public interface NameOfInterface {
   // Any number of final, static fields
   // Any number of abstract method declarations\
}

インターフェイスには次のプロパティがあります-

/* File name : Animal.java */
interface Animal {
   public void eat();
   public void travel();
}

インターフェースの実装

クラスがインターフェースを実装するとき、クラスはコントラクトに署名し、インターフェースの特定の動作を実行することに同意するものと考えることができます。クラスがインターフェイスのすべての動作を実行しない場合、クラスは自分自身を抽象として宣言する必要があります。

クラスは implements を使用します インターフェイスを実装するためのキーワード。 implements キーワードは、宣言の extends 部分に続くクラス宣言に現れます。

/* File name : 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

インターフェイスで定義されたメソッドをオーバーライドする場合、従うべきいくつかのルールがあります −

実装インターフェースの場合、いくつかのルールがあります −

インターフェースの拡張

クラスが別のクラスを拡張できるのと同じ方法で、インターフェイスは別のインターフェイスを拡張できます。 延長 キーワードはインターフェースを拡張するために使用され、子インターフェースは親インターフェースのメソッドを継承します。

以下の Sports インターフェースは、Hockey および Football インターフェースによって拡張されています。

// Filename: Sports.java
public interface Sports {
   public void setHomeTeam(String name);
   public void setVisitingTeam(String name);
}

// Filename: Football.java
public interface Football extends Sports {
   public void homeTeamScored(int points);
   public void visitingTeamScored(int points);
   public void endOfQuarter(int quarter);
}

// Filename: Hockey.java
public interface Hockey extends Sports {
   public void homeGoalScored();
   public void visitingGoalScored();
   public void endOfPeriod(int period);
   public void overtimePeriod(int ot);
}

Hockey インターフェイスには 4 つのメソッドがありますが、Sports から 2 つ継承しています。したがって、Hockey を実装するクラスは、6 つのメソッドすべてを実装する必要があります。同様に、Football を実装するクラスは、Football の 3 つのメソッドと Sports の 2 つのメソッドを定義する必要があります。

複数のインターフェースの拡張

Java クラスは、1 つの親クラスのみを拡張できます。多重継承は許可されていません。ただし、インターフェイスはクラスではなく、インターフェイスは複数の親インターフェイスを拡張できます。

extends キーワードが 1 回使用され、親インターフェイスがコンマ区切りのリストで宣言されます。

たとえば、Hockey インターフェイスが Sports と Event の両方を拡張した場合、次のように宣言されます −

public interface Hockey extends Sports, Event

タグ付けインターフェース

インターフェイスを拡張する最も一般的な用途は、親インターフェイスにメソッドが含まれていない場合です。たとえば、java.awt.event パッケージの MouseListener インターフェイスは、次のように定義されている java.util.EventListener を拡張しました。

package java.util;
public interface EventListener
{}

メソッドを持たないインターフェースは タグ付け と呼ばれます インターフェース。タグ付けインターフェースの基本的な設計目的は 2 つあります −

共通の親を作成します − Java API の他の多数のインターフェースによって拡張される EventListener インターフェースと同様に、タグ付けインターフェースを使用して、インターフェースのグループ間で共通の親を作成できます。たとえば、インターフェースが EventListener を拡張する場合、JVM は、この特定のインターフェースがイベント委任シナリオで使用されることを認識します。

データ型をクラスに追加します − この状況がタグ付けという用語の由来です。タグ付けインターフェースを実装するクラスはメソッドを定義する必要はありませんが (インターフェースにはメソッドがないため)、クラスはポリモーフィズムによってインターフェース型になります。


Java

  1. Java 最終キーワード
  2. オペレーターの Java インスタンス
  3. Java インターフェイス
  4. Java ネストされた静的クラス
  5. Java匿名クラス
  6. Java シングルトン クラス
  7. Java リフレクション
  8. Java ObjectOutputStream クラス
  9. Javaジェネリック
  10. Java ファイル クラス
  11. Java のインターフェイスと抽象クラス:違いは何ですか?