antara muka Java



Antaramuka (Bahasa Inggeris: Interface) ialah jenis abstrak dalam bahasa pengaturcaraan JAVA dan merupakan koleksi kaedah abstrak biasanya diisytiharkan dengan antara muka. Kelas mewarisi kaedah abstrak antara muka dengan mewarisi antara muka.

Antara muka bukan kelas Cara menulis antara muka sangat serupa dengan kelas, tetapi ia tergolong dalam konsep yang berbeza. Kelas menerangkan sifat dan kaedah sesuatu objek. Antara muka mengandungi kaedah yang dilaksanakan oleh kelas.

Melainkan kelas yang melaksanakan antara muka ialah kelas abstrak, kelas mesti menentukan semua kaedah dalam antara muka.

Antara muka tidak boleh dibuat seketika, tetapi ia boleh dilaksanakan. Kelas yang melaksanakan antara muka mesti melaksanakan semua kaedah yang diterangkan dalam antara muka, jika tidak, ia mesti diisytiharkan sebagai kelas abstrak. Di samping itu, dalam Java, jenis antara muka boleh digunakan untuk mengisytiharkan pembolehubah, ia boleh menjadi penunjuk nol, atau terikat pada objek yang melaksanakan antara muka ini.

Persamaan antara antara muka dan kelas:

  • Antara muka boleh mempunyai pelbagai kaedah.

  • Fail antara muka disimpan dalam fail yang berakhir dengan .java, dan nama fail menggunakan nama antara muka.

  • Fail bytecode antara muka disimpan dalam fail yang berakhir dengan .class.

  • Fail bytecode yang sepadan untuk antara muka mestilah dalam struktur direktori yang sepadan dengan nama pakej.

Perbezaan antara antara muka dan kelas:
  • Antara muka tidak boleh digunakan untuk membuat seketika objek.

  • Antara muka tidak mempunyai kaedah pembina.

  • Semua kaedah dalam antara muka mestilah kaedah abstrak.

  • Antara muka tidak boleh mengandungi pembolehubah ahli, kecuali pembolehubah statik dan akhir.

  • Antara muka tidak diwarisi oleh kelas, tetapi dilaksanakan oleh kelas.

  • Antara muka menyokong pelbagai warisan.


Pengisytiharan antara muka

Sintaks pengisytiharan antara muka adalah seperti berikut:

[可见度] interface 接口名称 [extends 其他的类名] {
        // 声明变量
        // 抽象方法
}

Kata kunci Antaramuka digunakan untuk mengisytiharkan antara muka . Di bawah ialah contoh mudah pengisytiharan antara muka. Antara muka

/* 文件名 : NameOfInterface.java */
import java.lang.*;
//引入包

public interface NameOfInterface
{
   //任何类型 final, static 字段
   //抽象方法
}


mempunyai ciri-ciri berikut:


  • Antara muka adalah abstrak secara tersirat apabila mengisytiharkan antara muka, anda tidak perlu menggunakan kata kunci abstrak.

  • Setiap kaedah dalam antara muka juga adalah abstrak secara tersirat, dan tidak memerlukan kata kunci abstrak semasa mengisytiharkannya.

  • Semua kaedah dalam antara muka adalah awam.

Instance

/* 文件名 : Animal.java */
interface Animal {

   public void eat();
   public void travel();
}

Pelaksanaan antara muka

Apabila kelas melaksanakan antara muka, kelas mesti melaksanakan semua kaedah dalam antara muka. Jika tidak, kelas mesti diisytiharkan abstrak. Kelas

menggunakan kata kunci implements untuk melaksanakan antara muka. Dalam pengisytiharan kelas, kata kunci Implements diletakkan selepas pengisytiharan kelas.

Untuk melaksanakan sintaks antara muka, anda boleh menggunakan formula ini:

... implements 接口名称[, 其他接口, 其他接口..., ...] ...

Contoh

/* 文件名 : 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();
   }
}

Hasil kompilasi dan larian bagi contoh di atas adalah seperti berikut:

Mammal eats
Mammal travels

Tulis semula antara muka Apabila mengisytiharkan kaedah, anda perlu memberi perhatian kepada peraturan berikut:

  • Apabila kelas melaksanakan kaedah antara muka, ia tidak boleh membuang pengecualian mandatori Ia hanya boleh membuang pengecualian mandatori dalam antara muka atau dalam kelas abstrak yang mewarisi antara muka.

  • Kelas hendaklah mengekalkan nama kaedah yang konsisten apabila mengatasi kaedah, dan harus mengekalkan jenis nilai pulangan yang sama atau serasi.

  • Jika kelas yang melaksanakan antara muka adalah kelas abstrak, tidak perlu melaksanakan kaedah antara muka.

Apabila melaksanakan antara muka, anda juga harus memberi perhatian kepada beberapa peraturan:

  • Kelas boleh melaksanakan berbilang antara muka pada masa yang sama.

  • Kelas hanya boleh mewarisi daripada satu kelas, tetapi boleh melaksanakan berbilang antara muka.

  • Antara muka boleh mewarisi antara muka lain, yang serupa dengan pewarisan antara kelas.


Warisan antara muka

Antara muka boleh mewarisi antara muka lain, yang serupa dengan kaedah pewarisan antara kelas. Warisan antara muka menggunakan kata kunci lanjutan, dan sub-antara muka mewarisi kaedah antara muka induk.

Antara muka Sukan berikut diwarisi oleh antara muka Hoki dan Bola Sepak:


// 文件名: 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);
}

Antaramuka Hoki mengisytiharkan empat kaedah tersendiri dan mewarisi dua kaedah daripada Antara muka sukan , Dengan cara ini, kelas yang melaksanakan antara muka Hoki perlu melaksanakan enam kaedah.

Begitu juga, kelas yang melaksanakan antara muka Bola Sepak perlu melaksanakan lima kaedah, dua daripadanya datang daripada antara muka Sukan.


Pewarisan berbilang antara muka

Di Java, pewarisan berbilang kelas adalah haram, tetapi antara muka membenarkan pewarisan berbilang.

Dalam pelbagai warisan antara muka, kata kunci lanjutan hanya perlu digunakan sekali, diikuti dengan antara muka yang diwarisi. Seperti yang ditunjukkan di bawah:

public interface Hockey extends Sports, Event

Serpihan program di atas ialah sub-antara muka yang ditakrifkan secara sah Tidak seperti kelas, antara muka membenarkan pewarisan berbilang dan Sukan dan Acara mungkin mentakrifkan atau mewarisi kaedah yang sama


<🎜. >Tanda antara muka

Antara muka warisan yang paling biasa digunakan ialah antara muka yang tidak mengandungi sebarang kaedah.

Antara muka pengenalan ialah antara muka tanpa sebarang kaedah atau sifat Ia hanya menunjukkan bahawa kelasnya tergolong dalam jenis khusus untuk kod lain untuk diuji dan dibenarkan melakukan sesuatu.

Fungsi antara muka pengenalan: Secara ringkas dan jelas, ia adalah untuk menandakan (mencap) objek supaya objek itu mempunyai keistimewaan tertentu atau tertentu.

Contohnya: Antara muka java.util.EventListener yang diwarisi oleh antara muka MouseListener dalam pakej java.awt.event ditakrifkan seperti berikut:

package java.util;
public interface EventListener
{}

Antara muka tanpa sebarang kaedah dipanggil penanda antara muka. Antara muka penanda digunakan terutamanya untuk dua tujuan berikut:

  • Tubuhkan antara muka ibu bapa awam:

    Sama seperti antara muka EventListener, yang terdiri daripada berdozen API Java yang memanjangkan antara muka lain Anda boleh menggunakan antara muka berteg untuk mencipta antara muka induk untuk sekumpulan antara muka. Contohnya: Apabila antara muka mewarisi antara muka EventListener, Mesin Maya Java (JVM) mengetahui bahawa antara muka akan digunakan untuk skim proksi acara.

  • Tambahkan jenis data pada kelas:

    Situasi ini ialah tujuan asal antara muka penanda yang melaksanakan antara muka penanda tidak perlu mentakrifkan sebarang kaedah Antaramuka (kerana antara muka yang ditandakan tidak mempunyai kaedah sama sekali), tetapi kelas menjadi jenis antara muka melalui polimorfisme.