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

Java インターフェイス

Java インターフェイス

このチュートリアルでは、Java インターフェイスについて学習します。インターフェースを実装する方法と、それらをいつ使用するかについて、例を使用して詳細に学習します。

インターフェースは完全に抽象化されたクラスです。これには、抽象メソッド (本体のないメソッド) のグループが含まれます。

interface を使用します Java でインターフェイスを作成するためのキーワード。たとえば、

interface Language {
  public void getType();

  public void getVersion();
}

ここで、


インターフェースの実装

抽象クラスと同様に、インターフェースのオブジェクトを作成することはできません。

インターフェイスを使用するには、他のクラスがそれを実装する必要があります。 implements を使用します インターフェイスを実装するためのキーワード。

例 1:Java インターフェイス

interface Polygon {
  void getArea(int length, int breadth);
}

// implement the Polygon interface
class Rectangle implements Polygon {

  // implementation of abstract method
  public void getArea(int length, int breadth) {
    System.out.println("The area of the rectangle is " + (length * breadth));
  }
}

class Main {
  public static void main(String[] args) {
    Rectangle r1 = new Rectangle();
    r1.getArea(5, 6);
  }
}

出力

The area of the rectangle is 30

上記の例では、Polygon という名前のインターフェースを作成しました。 .インターフェイスには抽象メソッド getArea() が含まれています .

ここでは、長方形 クラスは Polygon を実装します .そして、getArea() の実装を提供します メソッド。


例 2:Java インターフェイス

// create an interface
interface Language {
  void getName(String name);
}

// class implements interface
class ProgrammingLanguage implements Language {

  // implementation of abstract method
  public void getName(String name) {
    System.out.println("Programming Language: " + name);
  }
}

class Main {
  public static void main(String[] args) {
    ProgrammingLanguage language = new ProgrammingLanguage();
    language.getName("Java");
  }
}

出力

Programming Language: Java

上記の例では、Language という名前のインターフェースを作成しました。 .インターフェイスには抽象メソッド getName() が含まれています .

ここでは、プログラミング言語 クラスはインターフェースを実装し、メソッドの実装を提供します。


複数のインターフェースの実装

Java では、クラスは複数のインターフェースを実装することもできます。たとえば、

interface A {
  // members of A
}

interface B {
  // members of B
}

class C implements A, B {
  // abstract members of A
  // abstract members of B
}

インターフェースの拡張

クラスと同様に、インターフェイスは他のインターフェイスを拡張できます。 extends キーワードは、インターフェースを拡張するために使用されます。たとえば、

interface Line {
  // members of Line interface
}

// extending interface
interface Polygon extends Line {
  // members of Polygon interface
  // members of Line interface
}

ここでは、ポリゴン インターフェイスは Line を拡張します インターフェース。ここで、Polygon を実装するクラスがある場合 、両方の Line のすべての抽象メソッドの実装を提供する必要があります と ポリゴン .


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

インターフェイスは、複数のインターフェイスを拡張できます。たとえば、

interface A {
   ...
}
interface B {
   ... 
}

interface C extends A, B {
   ...
}

Java インターフェイスの利点

インターフェースとは何かがわかったので、Java でインターフェースが使用される理由について学びましょう。

注意 :インターフェイス内のすべてのメソッドは暗黙的に public です すべてのフィールドは暗黙的に public static final です .たとえば、

interface Language {
  
  // by default public static final
  String type = "programming language";

  // by default public
  void getName();
}

Java インターフェイスのデフォルト メソッド

Java 8 のリリースにより、インターフェース内に実装されたメソッドを追加できるようになりました。これらのメソッドはデフォルト メソッドと呼ばれます。

インターフェイス内でデフォルトのメソッドを宣言するには、default を使用します キーワード。たとえば、

public default void getSides() {
   // body of getSides()
}

デフォルトのメソッドを使用する理由

デフォルトのメソッドが Java に導入された理由を理解するためのシナリオを考えてみましょう。

インターフェイスに新しいメソッドを追加する必要があるとします。

実装せずに簡単にインターフェイスにメソッドを追加できます。しかし、これで話は終わりではありません。そのインターフェースを実装するすべてのクラスは、メソッドの実装を提供する必要があります。

多数のクラスがこのインターフェースを実装していた場合、これらすべてのクラスを追跡して変更を加える必要があります。これは面倒なだけでなく、エラーが発生しやすくなります。

これを解決するために、Java はデフォルトのメソッドを導入しました。デフォルトのメソッドは、通常のメソッドと同様に継承されます。

デフォルトのメソッドをよりよく理解するために、例を挙げてみましょう。


例:Java インターフェイスのデフォルト メソッド

interface Polygon {
  void getArea();

  // default method 
  default void getSides() {
    System.out.println("I can get sides of a polygon.");
  }
}

// implements the interface
class Rectangle implements Polygon {
  public void getArea() {
    int length = 6;
    int breadth = 5;
    int area = length * breadth;
    System.out.println("The area of the rectangle is " + area);
  }

  // overrides the getSides()
  public void getSides() {
    System.out.println("I have 4 sides.");
  }
}

// implements the interface
class Square implements Polygon {
  public void getArea() {
    int length = 5;
    int area = length * length;
    System.out.println("The area of the square is " + area);
  }
}

class Main {
  public static void main(String[] args) {

    // create an object of Rectangle
    Rectangle r1 = new Rectangle();
    r1.getArea();
    r1.getSides();

    // create an object of Square
    Square s1 = new Square();
    s1.getArea();
    s1.getSides();
  }
}

出力

The area of the rectangle is 30
I have 4 sides.
The area of the square is 25
I can get sides of a polygon.

上記の例では、Polygon という名前のインターフェースを作成しました。 .デフォルトのメソッド getSides() があります および抽象メソッド getArea() .

ここでは、2 つのクラス Rectangle を作成しました。 そしてスクエア Polygon を実装する .

長方形 クラスは getArea() の実装を提供します メソッドと getSides() をオーバーライドします 方法。ただし、スクエア クラスは getArea() の実装のみを提供します メソッド。

さて、getSides() を呼び出しながら Rectangle を使用したメソッド オブジェクト、オーバーライドされたメソッドが呼び出されます。ただし、Square の場合は オブジェクト、デフォルトのメソッドが呼び出されます。


インターフェイスのプライベート メソッドと静的メソッド

Java 8 では、インターフェイス内に静的メソッドを含める別の機能も追加されました。

クラスと同様に、参照を使用してインターフェイスの静的メソッドにアクセスできます。たとえば、

// create an interface
interface Polygon {
  staticMethod(){..}
}

// access static method
Polygon.staticMethod();

注意 :Java 9 のリリースにより、プライベート メソッドもインターフェイスでサポートされます。

インターフェイスのオブジェクトを作成することはできません。したがって、プライベート メソッドは、インターフェース内の他のメソッドをサポートするヘルパー メソッドとして使用されます。


インターフェースの実際の例

Java インターフェイスのより実用的な例を見てみましょう。

// To use the sqrt function
import java.lang.Math;

interface  Polygon {
   void getArea();
  
 // calculate the perimeter of a Polygon
   default void getPerimeter(int... sides) {
      int perimeter = 0;
      for (int side: sides) {
         perimeter += side;
      }

   System.out.println("Perimeter: " + perimeter);
   }
}

class Triangle implements Polygon {
   private int a, b, c;
   private double s, area;

// initializing sides of a triangle
   Triangle(int a, int b, int c) {
      this.a = a;
      this.b = b;
      this.c = c;
      s = 0;
   }

// calculate the area of a triangle
   public void getArea() {
      s = (double) (a + b + c)/2;
      area = Math.sqrt(s*(s-a)*(s-b)*(s-c));
      System.out.println("Area: " + area);
   }
}

class Main {
   public static void main(String[] args) {
      Triangle t1 = new Triangle(2, 3, 4);

// calls the method of the Triangle class
      t1.getArea();

// calls the method of Polygon
      t1.getPerimeter(2, 3, 4);
   }
}

出力

Area: 2.9047375096555625
Perimeter: 9

上記のプログラムでは、Polygon という名前のインターフェイスを作成しました。 .デフォルトのメソッド getPerimeter() が含まれています および抽象メソッド getArea() .

すべてのポリゴンの周長を同じ方法で計算できるので、 getPerimeter() の本体を実装しました ポリゴンで .

これで、Polygon を実装するすべてのポリゴンが getPerimeter() を使用できます 周長を計算します。

ただし、面積を計算するためのルールは、ポリゴンごとに異なります。したがって、getArea() 実装なしで含まれています。

Polygon を実装するクラス getArea() の実装を提供する必要があります .


Java

  1. C# インターフェイス
  2. Java オペレーター
  3. Java コメント
  4. Java try-with-resources
  5. Java アノテーション
  6. Java NavigableSet インターフェイス
  7. Java ラムダ式
  8. Java のインターフェイスと抽象クラス:違いは何ですか?
  9. Java-インターフェース
  10. Java 9 - プライベート インターフェイス メソッド
  11. C# - インターフェイス