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.

Penggunaan Class Abstract dan Interface pada Java

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:

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 .

Membuat class Abstrak pada Java

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:

Mengextends kelas Abstrak pada Subclassnya

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.
Kita akan mengubah class komponen.java menjadi interface, lalu tambahkan beberapa variable dan method, seperti berikut ini:

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:

Penggunaan Interface pada Java

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.

Wildan M Athoillah
Wildan M Athoillah Blogger dan spesialis pembuat aplikasi android.