inter = antar
face = muka
Kata ini mungkin sering kamu dengar. Contohnya seperti: GUI (Graphical User
Interface) dan CLI (Command Line Interface).
Contoh:
Kalau HP zaman sekarang, paling cuma ada dua.. yakni tombol power dan tombol
volume.
HP menyala;
HP mati;
Suara HP tambah besar;
Suara HP mengecil;
Mengambil gambar dari kamera;
dll.
Misal pada HP tertetntu, jika menekan tombol volume 3x.. maka akan mengambil
screenshot. Sementara di HP merek lain, kita tidak bisa melakukan ini.
Pengertian Interface
Apa yang dimaksud dengan interface pada java? Di bawah ini pengertian interface yang
dikutip dari beberapa sumber :
Interface merupakan kumpulan method–method abstrak. Sebuah kelas yang
mengimplementasikan interface, mewarisi method – method abstrak dari
interface tersebut.
Interface adalah sebuah tipe referensi pada Java. Interface secara struktur
serupa dengan class. Isi dari interface adalah method abstract, artinya method
hanya dideklarasikan tidak ditulis secara utuh.
Interface adalah sebuah file yang hanya berisi method kosong. Method kosong
pada interface ditujukan untuk menjadi behaviour atau sifat wajib dari class yang
mengimplementasikannya.
Interface digunakan bila kita ingin mengaplikasikan suatu method yang spesifik, yang
tidak diperoleh dari proses inheritance. Tipe data yang boleh digunakan pada interface
hanya tipe data konstan. Interface tidak berisi perintah kepada system untuk melakukan
sesuatu, interface hanya memetakan apa yang harus dikirimkan dan apa yang
diharapkan untuk dikembalikan.
Manfaat Interface
Interface memiliki beberapa manfaat yang dapat memudahkan kita dalam melakukan
Pemrograman Berorientasi Objek, diantaranya :
Interface memungkinkan sebuah subclass diturunkan dari beberapa superclass
(multiple inheritance)
Inheritance (Pewarisan) digunakan ketika parent class memiliki atribut dan method lalu
semuanya diwariskanke subclass. Sedangkan Interface digunakan ketika parent tidak
memiliki apa-apa, hanya method yang tidak memiliki tubuh dan harus diimplementasikan
pada subclassnya. Interface juga memungkinkan terjadinya multiple inheritance, yaitu
sebuah subclass yang diturunkan dari lebih dari satu superclass.
Interface adalah sebuah tipe referensi pada java. Secara struktur hampir sama dengan
class. Ada beberapa aturan dalam penulisan interface :
Modifier method hanya boleh public, abstract atau default
Pada class yang mengimplement, modifier method – method hanya boleh public
Tidak boleh ada method concrete di interface, apabila ada maka program akan
error // Contoh method concrete : public void output(){System.out.println();}
Interface tidak bisa di instanisasi, tapi bisa di instanisasi melalui class yang
mengimplementnya
Contoh Program Interface
Biar nyambung dengan penjelasan saya yang tadi, kita akan pakai contoh
Handphone.
Jadi.. ada dua objek yang akan kita hubungkan dengan interface.
Yakni manusia dan handphone. Manusianya kita sebut saja sebagai PhoneUser.
Karena dia akan menggunakan objek HP.
Sekarang mari kita coba buat dalam bentuk kode. Buatlah proyek baru dengan
nama ContohInterface.
Setelah itu, buat class baru di dalam <default package> dengan nama Phone dan isi
kodenya seperti ini:
void powerOn();
void powerOff();
void volumeUp();
void volumeDown();
}
Berikutnya, buat lagi class baru dengan nama PhoneUser dan isi kodenya seperti ini:
void turnOnThePhone(){
this.phone.powerOn();
}
void turnOffThePhone(){
this.phone.powerOff();
}
void makePhoneLouder(){
this.phone.volumeUp();
}
void makePhoneSilent(){
this.phone.volumeDown();
}
}
Berikutnya kita akan membuat class implementasi dari interface Phone. Kita coba
buat satu saja dulu.
Silahkan buat class baru dengan nama Xiaomi, kemudian isi kodenya seperti ini:
public Xiaomi() {
// set volume awal
this.volume = 50;
}
@Override
public void powerOn() {
isPowerOn = true;
System.out.println("Handphone menyala...");
System.out.println("Selamat datang di XIAOMI");
System.out.println("Android version 29");
}
@Override
public void powerOff() {
isPowerOn = false;
System.out.println("Handphone dimatikan");
}
@Override
public void volumeUp() {
if (isPowerOn) {
if (this.volume == MAX_VOLUME) {
System.out.println("Volume FULL!!");
System.out.println("sudah " + this.getVolume() + "%");
} else {
this.volume += 10;
System.out.println("Volume sekarang: " +
this.getVolume());
}
} else {
System.out.println("Nyalakan dulu donk HP-nya!!");
}
}
@Override
public void volumeDown() {
if (isPowerOn) {
if (this.volume == MIN_VOLUME) {
System.out.println("Volume = 0%");
} else {
this.volume -= 10;
System.out.println("Volume sekarang: " +
this.getVolume());
}
} else {
System.out.println("Nyalakan dulu donk HP-nya!!");
}
}
public int getVolume() {
return this.volume;
}
}
Terakhir, buatlah class Main dengan isi sebagai berikut:
import java.util.Scanner;
// membuat objek HP
Phone redmiNote8 = new Xiaomi();
while (true) {
System.out.println("=== APLIKASI INTERFACE ===");
System.out.println("[1] Nyalakan HP");
System.out.println("[2] Matikan HP");
System.out.println("[3] Perbesar Volume");
System.out.println("[4] Kecilkan Volume");
System.out.println("[0] Keluar");
System.out.println("--------------------------");
System.out.print("Pilih aksi> ");
aksi = input.nextLine();
if(aksi.equalsIgnoreCase("1")){
dian.turnOnThePhone();
} else if (aksi.equalsIgnoreCase("2")){
dian.turnOffThePhone();
} else if (aksi.equalsIgnoreCase("3")){
dian.makePhoneLouder();
} else if (aksi.equalsIgnoreCase("4")){
dian.makePhoneSilent();
} else if (aksi.equalsIgnoreCase("0")){
System.exit(0);
} else {
System.out.println("Kamu memilih aksi yang salah!");
}
}
}
Sekarang coba jalankan class Main. Caranya, Klik kanan lalu pilih Run File atau
bisa juga dengan menekan Shift + F6 .
Maka hasilnya:
dian.turnOnThePhone();
dian.turnOnThePhone();
dian.turnOffThePhone();
dian.makePhoneLouder();
dian.makePhoneSilent();
Saat kita memanggil method-method ini, maka method yang ada di dalam
objek redmiNote8 yang akan dipanggil.
Lalu pertanyaanya:
Sebenarnya kita tidak harus selalu menggunakan interface. Tapi dalam kasus
tertentu, interface akan sangat berguna.
Misalnya gini:
Untuk saat ini tidak akan terjadi apa-apa. Tapi sekarang bagaimana kalau kita
punya objek baru dari class yang mengimplementasikan interface Phone juga.
Kita sebut saja objek baru tersebut adalah iPhoneX yang merupakan instance dari
class IPhone.
Maka objek iPhoneX tidak akan bisa diberikan kepada objek PhoneUser. Karena di
konstruktornya dia cuma bisa pakai Xiaomi saja.
Contoh: