Friday 2 October 2015

interface di JAVA


Sebuah antarmuka adalah jenis referensi di Jawa, itu mirip dengan kelas, itu adalah kumpulan dari metode abstrak. Kelas A mengimplementasikan antarmuka, sehingga mewarisi metode abstrak antarmuka.

Seiring dengan metode abstrak antarmuka juga mengandung konstanta, metode standar, metode statis, dan jenis bersarang. Badan metode hanya ada untuk metode standar dan metode statis.

Menulis sebuah antarmuka mirip dengan menulis sebuah kelas. Tapi kelas menggambarkan atribut dan perilaku dari sebuah objek. Dan antarmuka mengandung perilaku yang mengimplementasikan kelas.

Kecuali kelas yang mengimplementasikan antarmuka yang abstrak, semua metode antarmuka perlu didefinisikan di kelas.

Sebuah antarmuka mirip dengan kelas dengan cara berikut:

Sebuah antarmuka dapat berisi sejumlah metode.

Sebuah antarmuka ditulis dalam sebuah file dengan ekstensi .java, dengan nama interface yang cocok dengan nama file.

Kode byte dari sebuah antarmuka muncul dalam file .class.

Antarmuka muncul dalam paket, dan berkas bytecode yang sesuai mereka harus berada dalam struktur direktori yang cocok dengan nama paket.

Namun, antarmuka berbeda dari kelas dalam beberapa cara, termasuk:

Anda tidak dapat instantiate sebuah antarmuka.

Antarmuka tidak mengandung konstruktor.

Semua metode di sebuah antarmuka yang abstrak.

Sebuah antarmuka tidak dapat berisi bidang misalnya. Satu-satunya bidang yang dapat muncul dalam sebuah antarmuka harus dinyatakan baik statis dan final.

Sebuah antarmuka tidak diperpanjang oleh kelas; diimplementasikan oleh kelas.

Sebuah antarmuka dapat memperpanjang beberapa interface.

Mendeklarasikan Antarmuka:

Antarmuka kata kunci digunakan untuk menyatakan sebuah antarmuka. Berikut ini adalah contoh sederhana untuk menyatakan sebuah antarmuka:

Contoh:

Dibawah ini adalah contoh dari sebuah antarmuka:

/* 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\
}

Antarmuka memiliki sifat sebagai berikut:

Antarmuka secara implisit abstrak. Anda tidak perlu menggunakan kata kunci abstract sementara menyatakan antarmuka.

Setiap metode dalam sebuah antarmuka juga secara implisit abstrak, sehingga kata kunci abstrak tidak diperlukan.

Metode dalam sebuah antarmuka yang secara implisit publik.

contoh:

/* File name : Animal.java */
interface Animal {

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

Menerapkan Interfaces:

Ketika kelas mengimplementasikan antarmuka, Anda bisa memikirkan kelas sebagai menandatangani kontrak, setuju untuk melakukan perilaku tertentu dari antarmuka. Jika kelas tidak melakukan semua perilaku antarmuka, kelas harus menyatakan dirinya sebagai abstrak.

Kelas A menggunakan alat kata kunci untuk mengimplementasikan interface. -Alat kata kunci muncul dalam deklarasi kelas berikut meluas bagian deklarasi.

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

akan menghasilkan :

ammal eats
ammal travels

Ketika meng-override metode yang didefinisikan dalam interface ada beberapa aturan yang harus diikuti:

Pengecualian diperiksa tidak harus dideklarasikan pada metode pelaksanaan selain yang dinyatakan dengan metode interface atau subclass dari mereka dinyatakan dengan metode antarmuka.

Tanda tangan dari metode antarmuka dan jenis kembali sama atau subtipe harus dipertahankan ketika meng-override metode.

Sebuah kelas implementasi itu sendiri dapat abstrak dan jika metode sehingga antarmuka tidak perlu dilaksanakan.

Ketika pelaksanaan interface ada beberapa aturan:

Kelas A dapat mengimplementasikan lebih dari satu antarmuka pada suatu waktu.

Kelas A dapat memperpanjang hanya satu kelas, tapi menerapkan banyak antarmuka.

Sebuah antarmuka dapat memperpanjang antarmuka lain, sama dengan cara yang kelas dapat memperpanjang kelas lain.

Memperluas Antarmuka:

Sebuah antarmuka dapat memperpanjang antarmuka lain, sama dengan cara yang kelas dapat memperpanjang kelas lain. Meluas kata kunci yang digunakan untuk memperluas antarmuka, dan antarmuka anak mewarisi metode dari antarmuka orangtua.

Antarmuka Olahraga berikut diperpanjang oleh Hockey dan Football interface.

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

Antarmuka Hockey memiliki empat metode, tetapi mewarisi dua dari Olahraga; dengan demikian, kelas yang mengimplementasikan Hockey perlu menerapkan semua enam metode. Demikian pula, kelas yang mengimplementasikan Football perlu menentukan tiga metode dari Football dan dua metode dari Sports.

Memperluas Beberapa Antarmuka:

Sebuah kelas Java hanya dapat memperpanjang satu kelas induk. Beberapa warisan tidak diperbolehkan. Antarmuka tidak kelas, bagaimanapun, dan antarmuka dapat memperpanjang lebih dari satu antarmuka orangtua.

Meluas kata kunci digunakan sekali, dan antarmuka induk dinyatakan dalam daftar dipisahkan koma.

Sebagai contoh, jika antarmuka Hoki diperpanjang baik Olahraga dan acara, itu akan dinyatakan sebagai:

public interface Hockey extends Sports, Event

Tagging Antarmuka:

Penggunaan yang paling umum dari memperluas antarmuka terjadi ketika antarmuka orangtua tidak berisi metode. Sebagai contoh, interface MouseListener dalam paket java.awt.event diperpanjang java.util.EventListener, yang didefinisikan sebagai:

package java.util;
public interface EventListener
{}

Antarmuka tanpa metode dalam ini disebut sebagai antarmuka penandaan. Ada dua tujuan desain dasar penandaan interface:

Menciptakan induk yang sama: Seperti dengan antarmuka EventListener, yang diperpanjang oleh puluhan antarmuka lain dalam API Java, Anda dapat menggunakan antarmuka penandaan untuk membuat induk yang sama antara sekelompok interface. Sebagai contoh, ketika sebuah antarmuka meluas EventListener, JVM tahu bahwa antarmuka khusus ini akan digunakan dalam skenario delegasi acara.

Menambahkan tipe data untuk kelas: Situasi ini di mana tagging jangka berasal dari. Sebuah kelas yang mengimplementasikan antarmuka penandaan tidak perlu mendefinisikan metode (karena antarmuka tidak memiliki), tapi kelas menjadi tipe antarmuka melalui polimorfisme.

No comments:

Post a Comment