Antarmuka Java Dijelaskan: Cara Mendefinisikan dan Menerapkannya dengan Contoh Praktis
Apa Itu Antarmuka Java?
Sebuah antarmuka Java adalah tipe abstrak yang mendefinisikan kontrak untuk kelas. Ia dapat mendeklarasikan konstanta dan metode abstrak tetapi tidak dapat menyimpan status. Semua metode secara implisit public dan abstract, dan sebuah kelas dapat mengimplementasikan banyak antarmuka, menyediakan perilaku yang diperlukan.
Mendeklarasikan Antarmuka
interface MyInterface { // metode abstrak } Mengimplementasikan Antarmuka
class Dog implements Pet { // implementasikan metode dari Pet } Memperluas Antarmuka
interface RidableAnimal extends Animal, Vehicle { // metode abstrak tambahan } Mengapa Antarmuka Diperlukan?
Antarmuka memungkinkan Anda memisahkan apa dari bagaimana. Mereka mengaktifkan polimorfisme, mempromosikan coupling longgar, dan memecahkan masalah "pewarisan ganda" yang tidak didukung Java untuk kelas.
Misalnya, sebuah MediaPlayer dapat memiliki subclass CDPlayer dan DVDPlayer terpisah, masing-masing menyediakan implementasi play() sendiri. Jika sebuah kelas membutuhkan kedua kemampuan tersebut, Java melarang pewarisan ganda kelas, tetapi antarmuka memungkinkan kita menggabungkan perilaku dengan rapi.


Demikian pula, kelas Dog dapat memperluas Animal dan mengimplementasikan antarmuka Pet untuk memenuhi kewajiban pewarisan dan kontrak.

Contoh Antarmuka Java
Langkah 1: Tulis kode berikut:
interface Pet { void test(); } class Dog implements Pet { @Override public void test() { System.out.println("Metode antarmuka diimplementasikan"); } public static void main(String[] args) { Pet p = new Dog(); p.test(); } } Langkah 2: Kompilasi dan jalankan program untuk melihat keluaran.
Kelas vs. Antarmuka
| Kelas | Antarmuka |
| Sebuah kelas dapat diinstantiasi dan dapat menyimpan status. | Sebuah antarmuka tidak dapat diinstantiasi dan hanya berisi konstanta dan tanda tangan metode. |
| Dapat memiliki metode konkret (diimplementasikan). | Sebelum Java 8, tidak dapat memiliki metode konkret; sejak Java 8, dapat berisi metode default dan static. |
Modifier akses dapat private, protected, atau public. | Semua anggota secara implisit public (dan static final untuk bidang). |
Kapan Menggunakan Antarmuka vs. Kelas Abstrakt?
- Kelas Abstrakt: Gunakan saat Anda memerlukan implementasi dasar umum atau status bersama untuk kelas terkait.
- Antarmuka: Gunakan saat Anda memerlukan mendefinisikan peran atau kemampuan yang dapat diadopsi oleh kelas yang tidak terkait.
Fakta Penting tentang Antarmuka
- Sebuah kelas dapat mengimplementasikan banyak antarmuka, tetapi harus memberikan implementasi untuk setiap metode yang dideklarasikan.
- Antarmuka tidak dapat diinstantiasi secara langsung; mereka berfungsi sebagai kontrak.
- Referensi antarmuka dapat menunjuk ke kelas mana pun yang mengimplementasikannya.
- Sebuah antarmuka dapat memperluas satu atau lebih antarmuka lainnya.
- Antarmuka bersarang diizinkan di dalam antarmuka atau kelas lain.
- Dua antarmuka tidak dapat mendeklarasikan metode dengan nama yang sama tetapi tipe kembalian yang berbeda jika sebuah kelas mengimplementasikan keduanya.
- Sejak Java 8, antarmuka dapat berisi metode
default dan static.
Ringkasan
- Antarmuka mendefinisikan kontrak; kelas menyediakan implementasi.
- Semua metode antarmuka secara implisit
public dan abstract (kecuali default atau static). - Antarmuka tidak dapat diinstantiasi tetapi dapat direferensikan oleh variabel.
- Gunakan antarmuka untuk mencapai polimorfisme dan untuk menghindari batasan pewarisan tunggal Java.