Penggunaan Class Abstract dan Interface pada Java
Assalamualaikum Warahmatullahi Wabarakatuh.
Pada kesempatan kali ini saya akan berbagi ilmu dengan kalian mengenai penggunaan class abstract dan interface pada java, kedua class tersebut merupakan konsep dari pemrograman berorientasikan objek (OOP), pada java, abstract dan interface fungsi dan kegunaannya yang hampir sama, kedua class tersebut digunakan untuk di implementasikan pada class turunannya.

Didalam class abstract dan interface terdapat method-method yang tidak mempunyai body, method tersebut akan kita implementasikan pada class turunannya seperti membuat sebuah pernyataan atau statement.
Materi Lainnya Yang Direkomendasikan:
- Cara Manipulasi String pada Java
- Mengenal Access Modifier pada Java
- Apa Itu Escape Sequence pada Java?
A. Class Abstract
Kelas Abstrak adalah kelas yang mengandung satu method abstrak atau lebih, kelas abstrak tersebut digunakan hanya untuk membuat sebuah method yang tanpa ada implementasinya secara langsung.
Agar kalian mudah memahaminya, kita akan membuat 2 buah class, misalnya kita berimana class komponen dan class membuat_kue, class komponen akan kita ubah menjadi kelas abstrak dan class membuat_kue adalah kelas utama yang mempunyai method main, nantinya method-method pada kelas komponen (abstrak) akan di turunkan pada class membuat_kue .
Pertama buka class komponen.java pada project kalian, untuk mengubahnya menjadi class abstrak, kita perlu menambahkan keyword abstract dibelakang nama classnya, lalu akan kita pasang beberapa atribut seperti method pada class tersebut.
Kelas Abstrak adalah kelas yang mengandung satu method abstrak atau lebih, kelas abstrak tersebut digunakan hanya untuk membuat sebuah method yang tanpa ada implementasinya secara langsung.
Agar kalian mudah memahaminya, kita akan membuat 2 buah class, misalnya kita berimana class komponen dan class membuat_kue, class komponen akan kita ubah menjadi kelas abstrak dan class membuat_kue adalah kelas utama yang mempunyai method main, nantinya method-method pada kelas komponen (abstrak) akan di turunkan pada class membuat_kue .

Pertama buka class komponen.java pada project kalian, untuk mengubahnya menjadi class abstrak, kita perlu menambahkan keyword abstract dibelakang nama classnya, lalu akan kita pasang beberapa atribut seperti method pada class tersebut.
package WILDAN_TECHNO_ART;
//kelas Abstrak
public abstract class komponen {
//Method Abstrak
abstract void bahan_bahan();
abstract void peralatan();
abstract void proses_pembuatan();
}
Jadi intinya method abstrak itu adalah sebuah method yang tidak tahu mau kita apakan nantinya, sebuah class dan method abstrak dibuat oleh seorang programmer sebagai acuan atau gambaran dari program yang ingin mereka buat.
Selanjutnya buka class membuat_kue.java, lalu kita extends dan implementasikan semua method tersebut pada class ini:

Beberapa method yang sudah di implementasikan akan terlihat seperti ini:
package WILDAN_TECHNO_ART;
public class membuat_kue extends komponen{
public static void main(String[] args){
}
@Override
void bahan_bahan() {
}
@Override
void peralatan() {
}
@Override
void proses_pembuatan() {
}
}
Dengan adanya class dan method abstrak, si programmer jadi tahu statement-statement apa saya yang harus dibuatnya, kalian dapat mengisi statement pada method-method tersebut seperti ini:
package WILDAN_TECHNO_ART;
public class membuat_kue extends komponen{
public static void main(String[] args){
//Membuat Instance/Objek dari Class Mambuat_Kue
membuat_kue kue = new membuat_kue();
kue.bahan_bahan();
kue.peralatan();
kue.proses_pembuatan();
}
@Override
void bahan_bahan() {
String bahan1 = "Tepung Terigu";
String bahan2 = "Gula";
String bahan3 = "Telur";
System.out.println("====== BAHAN-BAHAN ======");
System.out.println("1."+bahan1);
System.out.println("2."+bahan2);
System.out.println("3."+bahan3);
}
@Override
void peralatan() {
String alat1 = "Oven";
String alat2 = "Mixer";
String alat3 = "Loyang";
System.out.println("====== ALAT-ALAT ======");
System.out.println("1."+alat1);
System.out.println("2."+alat2);
System.out.println("3."+alat3);
}
@Override
void proses_pembuatan() {
System.out.println("====== PROSES ======");
System.out.println("1.Aduk dan Campurkan Semua Bahan Pada Mixer");
System.out.println("2.Masukan Pada Loyang");
System.out.println("3.Oven Sampai Matang");
System.out.println("4.Selesai");
}
}
Demo:

B. Interface
Interface memiliki pengertian dan fungsi yang hampir sama dengan class Abstract, walalupun fungsi dari keduanya sama, tetapi ada bebrapa perbedaan yang perlu kalian ketahui, berikut ini adalah tabel yang menjelaskan perbedaan diantara abstract dan interface:
Abstract | Interface |
---|---|
Bisa berisi abstract dan non-abstract method. | Hanya boleh berisi abstract method. |
Kita harus menuliskan sendiri modifiernya. | Kita tidak perlu menulis public abstract di depan nama method. Karena secara implisit, modifier untuk method di interface adalah public dan abstract. |
Bisa mendeklarasikan constant dan instance variable. | Hanya bisa mendeklarasikan constant. Secara implisit variable yang dideklarasikan di interface bersifat public, static dan final. |
Method boleh bersifat static. | Method tidak boleh bersifat static. |
Method boleh bersifat final. | Method tidak boleh bersifat final. |
Suatu abstact class hanya bisa meng-extend satu abstract class lainnya. | Suatu interface bisa meng-extend satu atau lebih interface lainnya. |
Abstract class hanya bisa meng-extend satu abstract class dan meng-implement beberapa interface. | Suatu interface hanya bisa meng-extend interface lainnya. Dan tidak bisa meng-implement class atau interface lainnya. |
package WILDAN_TECHNO_ART;
//Interface
interface komponen {
//Secara Implisit Variable tersebut Bersifat Public Static dan Final
double kecepatan = 160.0;
String model = "Lamborghini";
//Secara Implisit Method Tersebut Bersifat Public dan Abstrak
void mesin();
void design();
}
Berbeda dengan class abstrak, komponen didalam interface memiliki aturan dimana kita tidak perlu menambahkan sifat seperti public, abstract dan final pada variable atau method tersebut, karena secara implisit variable atau method tersebut sudah bersifat public, abstract dan final.
Buatlah class baru dan berimana mobil, pada class tersebut kita perlu mengimplementasikan class komponen dengan menggunakan keyword implements.
package WILDAN_TECHNO_ART;
public class mobil implements komponen{
public static void main(String[] args){
mobil data = new mobil();
}
@Override
public void mesin() {
}
@Override
public void design() {
}
}
Kita bisa melakukan apa saja pada method-method tersebut, seperti berikut ini:
package WILDAN_TECHNO_ART;
public class mobil implements komponen{
public static void main(String[] args){
mobil data = new mobil();
data.mesin();
data.design();
}
@Override
public void mesin() {
System.out.println("Kecepatan Mobil: "+kecepatan);
}
@Override
public void design() {
System.out.println("Mempunyai Model: "+model);
}
}
Demo:

kedua class tersebut memiliki kelebihan dan kekurangannya masing-masing, kalian bisa menggunakan keduanya sesuai kebutuhan.
Selamat mencoba, jika masih bingung dan ada yang ingin ditanyakan, silakan isi komentar dibawah, mohon maaf bila ada kesalahan.
Wassalamualaikum Warahmatullahi Wabarakatuh.