Abstract & Interface As’ad Djamalilleil
Class Abstract Class abstract adalah class yang di dalamnya terdapat class member yang hanya berupa deklarasi abstract function saja dimana function tersebut tidak memiliki definisi Definisi function itu nantinya dibuat pada sub-class dari class abstract tersebut, dengan cara meng-over-ride function yang bersifat abstract itu
Syntax class abstract abstract class NamaClass { //deklarasi atau definisi class member yg //lain bila ada //deklarasi function tanpa definisi abstract tipe namaFunc([prm1, prm2, …]); }
Pada awal class diberi keyword abstract yang menandakan bahwa di dalam class tersebut memiliki function yang bersifat abstract Class member lain dapat ditambahkan bila memang diperlukan Function yang bersifat abstract diawali juga dengan keyword abstract Function abstract tidak memiliki definisi, hanya berupa kepala function dan parameter bila ada
Contoh kode class abstract (10.1) abstract class Mencuci{ boolean sabun; int banyakAir; abstract void cuci(); void menyiram(){ System.out.println("menyiram air"); } class CuciBaju extends Mencuci{ void cuci(){ System.out.println("masukan ke mesin cuci"); System.out.println("tambah sabun"); System.out.println("nyalakan mesin"); }
void menyiram(){ System.out.println("membuang air cucian"); } class CuciTangan extends Mencuci{ void cuci(){ System.out.println("buka kran air"); System.out.println("bilas tangan"); } class Bekerja{ public static void main(String args[]){ Mencuci bersih; CuciBaju kaos = new CuciBaju(); CuciTangan makan = new CuciTangan();
bersih = kaos; bersih.cuci(); bersih.menyiram(); bersih = makan; bersih.cuci(); bersih.menyiram(); }
Pada sub-class CuciBaju dan CuciTangan masing-masing memiliki implementasi yang berbeda bagaimana proses cuci dilakukan Pada level sub-class, over-riding wajib dilakukan terhadap function yang bersifat abstract Teknik seperti ini biasanya diistilahkan juga sebagai polymorphism walaupun setiap sub-class memiliki bentuk yang sama namun berbeda dari segi implementasi
Interface Penggunaan interface mirip dengan class abstract Perbedaannya adalah pada interface memang disediakan khusus untuk template atau design class saja Sebuah interface digunakan dengan cara diimplementasi pada sebuah class Sebuah class dapat mengimplementasi lebih dari satu interface
Java tidak mendukung multiple- inheritance, sub-class hanya dapat di- extends dari satu class saja Interface adalah cara untuk dapat membuat turunan dari dua atau lebih class
Syntax interface interface NamaInterface { // isi interface } Isi dari interface seperti halnya sebuah class abstract namun dengan beberapa perbedaan Variabel yang dideklarasikan harus bersifat static dan final, artinya nilai variabel tersebut adalah tetap
Seluruh function yang dideklarasikan di dalam sebuah interface akan diasumsikan sebagai function abstract, oleh karena itu penggunaan keyword abstract tidak diperlukan Sebuah interface dapat diimplementasikan pada class dengan menggunakan keyword implements, berbeda dengan inheritance yang menggunakan keyword extends
Contoh kode dari sebuah interface (10.2) interface Permainan{ int panah = 4; public void panahKiri(); public void panahKanan(); public void panahAtas(); public void panahBawah(); } class Bola implements Permainan{ public void panahKiri(){ System.out.println("tendang ke kiri"); }
public void panahKanan(){ System.out.println("tendang ke kanan"); } public void panahAtas(){ System.out.println("tendang ke depan"); } public void panahBawah(){ System.out.println("balik belakang"); } class Balapan implements Permainan{ public void panahKiri(){ System.out.println("belok kiri"); }
public void panahKanan(){ System.out.println("belok kanan"); } public void panahAtas(){ System.out.println("injak gas"); } public void panahBawah(){ System.out.println("injak rem"); }
Terdapat dua class yg mengimplementasi interface Permainan, yaitu class Bola dan Balapan Class yang mengimplementasi sebuah interface harus mendefinisikan setiap function dari interface Class Bola dan Balapan memiliki definisi yang berbeda untuk setiap function sesuai dengan fungsinya seperti dalam sebuah permainan komputer