Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> java

Antarmuka Jawa

Antarmuka Java

Dalam tutorial ini, kita akan belajar tentang antarmuka Java. Kita akan mempelajari cara mengimplementasikan antarmuka dan kapan menggunakannya secara mendetail dengan bantuan contoh.

Antarmuka adalah kelas yang sepenuhnya abstrak. Ini mencakup sekelompok metode abstrak (metode tanpa badan).

Kami menggunakan interface kata kunci untuk membuat antarmuka di Java. Misalnya,

interface Language {
  public void getType();

  public void getVersion();
}

Di sini,


Mengimplementasikan Antarmuka

Seperti kelas abstrak, kita tidak dapat membuat objek antarmuka.

Untuk menggunakan antarmuka, kelas lain harus mengimplementasikannya. Kami menggunakan implements kata kunci untuk mengimplementasikan antarmuka.

Contoh 1:Antarmuka 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);
  }
}

Keluaran

The area of the rectangle is 30

Pada contoh di atas, kami telah membuat antarmuka bernama Poligon . Antarmuka berisi metode abstrak getArea() .

Di sini, Persegi Panjang kelas mengimplementasikan Poligon . Dan, menyediakan implementasi getArea() metode.


Contoh 2:Antarmuka 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");
  }
}

Keluaran

Programming Language: Java

Pada contoh di atas, kami telah membuat antarmuka bernama Bahasa . Antarmuka menyertakan metode abstrak getName() .

Di sini, ProgrammingLanguage class mengimplementasikan antarmuka dan menyediakan implementasi untuk metode tersebut.


Mengimplementasikan Beberapa Antarmuka

Di Java, sebuah kelas juga dapat mengimplementasikan beberapa antarmuka. Misalnya,

interface A {
  // members of A
}

interface B {
  // members of B
}

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

Memperluas Antarmuka

Mirip dengan kelas, antarmuka dapat memperluas antarmuka lain. extends kata kunci digunakan untuk memperluas antarmuka. Misalnya,

interface Line {
  // members of Line interface
}

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

Di sini, Poligon antarmuka memperluas Baris antarmuka. Sekarang, jika ada kelas yang mengimplementasikan Poligon , itu harus menyediakan implementasi untuk semua metode abstrak dari kedua Line dan Poligon .


Memperluas Beberapa Antarmuka

Sebuah antarmuka dapat memperluas beberapa antarmuka. Misalnya,

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

interface C extends A, B {
   ...
}

Kelebihan Antarmuka di Java

Sekarang setelah kita mengetahui apa itu antarmuka, mari kita pelajari mengapa antarmuka digunakan di Java.

Catatan :Semua metode di dalam antarmuka secara implisit public dan semua bidang secara implisit public static final . Misalnya,

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

  // by default public
  void getName();
}

metode default di Antarmuka Java

Dengan rilis Java 8, sekarang kita dapat menambahkan metode dengan implementasi di dalam antarmuka. Metode ini disebut metode default.

Untuk mendeklarasikan metode default di dalam antarmuka, kami menggunakan default kata kunci. Misalnya,

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

Mengapa metode default?

Mari kita ambil skenario untuk memahami mengapa metode default diperkenalkan di Java.

Misalkan, kita perlu menambahkan metode baru di antarmuka.

Kita dapat menambahkan metode di antarmuka kita dengan mudah tanpa implementasi. Namun, itu bukan akhir dari cerita. Semua kelas kami yang mengimplementasikan antarmuka itu harus menyediakan implementasi untuk metode tersebut.

Jika sejumlah besar kelas mengimplementasikan antarmuka ini, kita perlu melacak semua kelas ini dan membuat perubahan pada mereka. Ini tidak hanya membosankan tetapi juga rawan kesalahan.

Untuk mengatasi ini, Java memperkenalkan metode default. Metode default diwarisi seperti metode biasa.

Mari kita ambil contoh untuk memiliki pemahaman yang lebih baik tentang metode default.


Contoh:Metode Default di Antarmuka 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();
  }
}

Keluaran

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.

Pada contoh di atas, kami telah membuat antarmuka bernama Poligon . Ini memiliki metode default getSides() dan metode abstrak getArea() .

Di sini, kami telah membuat dua kelas Rectangle dan Persegi yang mengimplementasikan Poligon .

Persegi Panjang class menyediakan implementasi getArea() metode dan menimpa getSides() metode. Namun, Persegi class hanya menyediakan implementasi getArea() metode.

Sekarang, sambil memanggil getSides() metode menggunakan Persegi Panjang objek, metode yang diganti disebut. Namun, dalam kasus Persegi objek, metode default dipanggil.


Metode pribadi dan statis di Antarmuka

Java 8 juga menambahkan fitur lain untuk menyertakan metode statis di dalam antarmuka.

Mirip dengan kelas, kita dapat mengakses metode statis antarmuka menggunakan referensinya. Misalnya,

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

// access static method
Polygon.staticMethod();

Catatan :Dengan rilis Java 9, metode pribadi juga didukung di antarmuka.

Kami tidak dapat membuat objek antarmuka. Oleh karena itu, metode pribadi digunakan sebagai metode pembantu yang menyediakan dukungan untuk metode lain dalam antarmuka.


Contoh Praktis Antarmuka

Mari kita lihat contoh Antarmuka Java yang lebih praktis.

// 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);
   }
}

Keluaran

Area: 2.9047375096555625
Perimeter: 9

Dalam program di atas, kami telah membuat antarmuka bernama Polygon . Ini termasuk metode default getPerimeter() dan metode abstrak getArea() .

Kita dapat menghitung keliling semua poligon dengan cara yang sama sehingga kita mengimplementasikan tubuh getPerimeter() di Poligon .

Sekarang, semua poligon yang mengimplementasikan Poligon dapat menggunakan getPerimeter() untuk menghitung keliling.

Namun, aturan untuk menghitung luas berbeda untuk poligon yang berbeda. Oleh karena itu, getArea() disertakan tanpa implementasi.

Setiap kelas yang mengimplementasikan Poligon harus menyediakan implementasi getArea() .


java

  1. antarmuka C#
  2. Operator Jawa
  3. Komentar Jawa
  4. Java mencoba-dengan-sumber daya
  5. Anotasi Jawa
  6. Antarmuka Java NavigableSet
  7. Ekspresi Java Lambda
  8. Antarmuka vs Kelas Abstrak di Jawa:Apa Perbedaannya?
  9. Java - Antarmuka
  10. Java 9 - Metode Antarmuka Pribadi