java
Antarmuka adalah tipe referensi di Jawa. Ini mirip dengan kelas. Ini adalah kumpulan metode abstrak. Kelas mengimplementasikan antarmuka, sehingga mewarisi metode abstrak antarmuka.
Seiring dengan metode abstrak, antarmuka juga dapat berisi konstanta, metode default, metode statis, dan tipe bersarang. Badan metode hanya ada untuk metode default dan metode statis.
Menulis antarmuka mirip dengan menulis kelas. Tetapi kelas menggambarkan atribut dan perilaku suatu objek. Dan antarmuka berisi perilaku yang diimplementasikan oleh kelas.
Kecuali jika kelas yang mengimplementasikan antarmuka adalah abstrak, semua metode antarmuka perlu didefinisikan di dalam kelas.
Antarmuka mirip dengan kelas dengan cara berikut −
Antarmuka dapat berisi sejumlah metode.
Antarmuka ditulis dalam file dengan .java ekstensi, dengan nama antarmuka yang cocok dengan nama file.
Kode byte antarmuka muncul di .class berkas.
Antarmuka muncul dalam paket, dan file bytecode terkait harus berada dalam struktur direktori yang cocok dengan nama paket.
Namun, antarmuka berbeda dari kelas dalam beberapa hal, termasuk −
Anda tidak dapat membuat instance antarmuka.
Antarmuka tidak berisi konstruktor.
Semua metode dalam antarmuka adalah abstrak.
Antarmuka tidak boleh berisi bidang instance. Satu-satunya bidang yang dapat muncul di antarmuka harus dinyatakan statis dan final.
Antarmuka tidak diperpanjang oleh kelas; itu diimplementasikan oleh sebuah kelas.
Sebuah antarmuka dapat memperluas beberapa antarmuka.
Antarmuka kata kunci digunakan untuk mendeklarasikan antarmuka. Berikut adalah contoh sederhana untuk mendeklarasikan antarmuka
Berikut adalah contoh 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 properti berikut
Sebuah antarmuka secara implisit abstrak. Anda tidak perlu menggunakan abstrak kata kunci saat mendeklarasikan antarmuka.
Setiap metode dalam antarmuka juga secara implisit abstrak, sehingga kata kunci abstract tidak diperlukan.
Metode dalam antarmuka secara implisit bersifat publik.
/* File name : Animal.java */ interface Animal { public void eat(); public void travel(); }
Saat kelas mengimplementasikan antarmuka, Anda dapat menganggap kelas sebagai menandatangani kontrak, setuju untuk melakukan perilaku spesifik antarmuka. Jika sebuah kelas tidak melakukan semua perilaku antarmuka, kelas tersebut harus mendeklarasikan dirinya sebagai abstrak.
Sebuah kelas menggunakan implement kata kunci untuk mengimplementasikan antarmuka. Kata kunci implements muncul di deklarasi kelas setelah bagian ekstensi dari 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(); } }
Ini akan menghasilkan hasil berikut
Mammal eats Mammal travels
Saat mengganti metode yang didefinisikan dalam antarmuka, ada beberapa aturan yang harus diikuti −
Pengecualian yang diperiksa tidak boleh dideklarasikan pada metode implementasi selain yang dideklarasikan oleh metode antarmuka atau subkelas dari yang dideklarasikan oleh metode antarmuka.
Tanda tangan metode antarmuka dan tipe pengembalian atau subtipe yang sama harus dipertahankan saat mengganti metode.
Kelas implementasi itu sendiri bisa abstrak dan jika demikian, metode antarmuka tidak perlu diimplementasikan.
Saat mengimplementasikan antarmuka, ada beberapa aturan
Sebuah kelas dapat mengimplementasikan lebih dari satu antarmuka dalam satu waktu.
Sebuah kelas hanya dapat memperluas satu kelas, tetapi mengimplementasikan banyak antarmuka.
Antarmuka dapat memperluas antarmuka lain, dengan cara yang sama seperti kelas dapat memperluas kelas lain.
Antarmuka dapat memperluas antarmuka lain dengan cara yang sama seperti kelas dapat memperluas kelas lain. memperluas kata kunci digunakan untuk memperluas antarmuka, dan antarmuka anak mewarisi metode antarmuka induk.
Antarmuka Olahraga berikut diperluas oleh antarmuka Hoki dan Sepak Bola.
// 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 Hoki memiliki empat metode, tetapi mewarisi dua dari Olahraga; dengan demikian, kelas yang mengimplementasikan Hockey perlu mengimplementasikan keenam metode tersebut. Demikian pula, kelas yang mengimplementasikan Football perlu mendefinisikan tiga metode dari Football dan dua metode dari Sports.
Kelas Java hanya dapat memperpanjang satu kelas induk. Warisan berganda tidak diperbolehkan. Namun, antarmuka bukanlah kelas, dan antarmuka dapat memperluas lebih dari satu antarmuka induk.
Kata kunci extends digunakan sekali, dan antarmuka induk dideklarasikan dalam daftar yang dipisahkan koma.
Misalnya, jika antarmuka Hoki memperluas Olahraga dan Acara, itu akan dinyatakan sebagai −
public interface Hockey extends Sports, Event
Penggunaan yang paling umum dari antarmuka yang diperluas terjadi ketika antarmuka induk tidak berisi metode apa pun. Misalnya, antarmuka MouseListener dalam paket java.awt.event memperluas java.util.EventListener, yang didefinisikan sebagai −
package java.util; public interface EventListener {}
Antarmuka tanpa metode di dalamnya disebut sebagai penandaan antarmuka. Ada dua tujuan desain dasar dari penandaan antarmuka −
Membuat induk yang sama Seperti halnya antarmuka EventListener, yang diperluas oleh lusinan antarmuka lain di Java API, Anda dapat menggunakan antarmuka penandaan untuk membuat induk umum di antara sekelompok antarmuka. Misalnya, ketika antarmuka memperluas EventListener, JVM mengetahui bahwa antarmuka khusus ini akan digunakan dalam skenario delegasi peristiwa.
Menambahkan tipe data ke kelas Situasi ini adalah asal istilah, penandaan. Kelas yang mengimplementasikan antarmuka penandaan tidak perlu mendefinisikan metode apa pun (karena antarmuka tidak memilikinya), tetapi kelas menjadi tipe antarmuka melalui polimorfisme.
java
Antarmuka Set Java Dalam tutorial ini, kita akan belajar tentang antarmuka Set di Java dan metodenya. Set antarmuka Java Collections framework menyediakan fitur dari himpunan matematika di Jawa. Ini memperluas Collection antarmuka. Berbeda dengan List antarmuka, set tidak boleh berisi elemen dupl
Kelas Java ObjectInputStream Dalam tutorial ini, kita akan belajar tentang Java ObjectOutputStream dan metodenya dengan bantuan contoh. ObjectInputStream kelas java.io package dapat digunakan untuk membaca objek yang sebelumnya ditulis oleh ObjectOutputStream . Ini memperluas InputStream kelas abs
Kelas Java PrintStream Dalam tutorial ini, kita akan belajar tentang kelas Java PrintStream dan metode print() dan printf() dengan bantuan contoh. PrintStream kelas java.io package dapat digunakan untuk menulis data keluaran dalam bentuk (teks) yang dapat dibaca secara umum alih-alih byte. Ini mem
Kelas Pembaca Java Dalam tutorial ini, kita akan belajar tentang Java Reader, subclass-nya dan metodenya dengan bantuan sebuah contoh. Reader kelas java.io package adalah superclass abstrak yang mewakili aliran karakter. Sejak Reader adalah kelas abstrak, itu tidak berguna dengan sendirinya. Namun