abstract & interface
Posted by zmhazmi on November 29, 2008
abstract class biasanya digunakan untuk pembuatan kerangka class lain yang mempunyai kemiripan, alasan dibuat suatu class abstract adalah karena implementasi dari setiap method nya belum diketahui (masih abstraksi).
contoh nya adl kelas MahlukHidup yang merupakan abstraksi dari mahluk hidup (manusia , hewan dan tumbuhan) maka dibuatkan kelas abstrak MahlukHidup yang hanya mendefinisikan data dan metode umum yang berlaku bagi mahluk hidup tsb.
contoh sederhana :
public abstract class MahlukHidup {
public abstract void berjalan();
public void makan() {
System.out.println("butuh makanan");
}
}
kelas abstrak MahlukHidup diatas memiliki (abstract) method umum yang berlaku berupa berjalan. untuk detail implementasinya, maka dibuatkan subkelas-subkelas di bawahnya yang mempunyai method berjalan tsb. seperti contoh dibawah ini :
public class Manusia extends MahlukHidup {
private String duaKaki;
public Manusia(String duaKaki) {
this.duaKaki = duaKaki;
}
public void berjalan() {
System.out.println("Manusia berjalan menggunakan : " + duaKaki);
}
}
dan
public class Hewan extends MahlukHidup {
private String kakiEmpat, kakiDua;
public Hewan(String kakiEmpat, String kakiDua) {
this.kakiEmpat = kakiEmpat;
this.kakiDua = kakiDua;
}
public void berjalan() {
System.out.println("Kucing berjalan menggunakan : " + kakiEmpat);
System.out.println("Ayam berjalan menggunakan : " + kakiDua);
}
}
masing-masing kelas Manusia dan Hewan tsb mempunyai method berjalan. dan untuk detail selanjutnya barulah bisa kita instansiasi subkelas tsb seperti contoh berikut :
public class TestMahlukHidup {
public void cekMahlukHidup(MahlukHidup mHidup) {
mHidup.berjalan();
mHidup.makan();
}
public static void main(String[] args) {
TestMahlukHidup tMahlukHidup = new TestMahlukHidup();
tMahlukHidup.cekMahlukHidup(new Manusia("Dua Kaki"));
tMahlukHidup.cekMahlukHidup(new Hewan("Empat Kaki", "Dua Kaki"));
}
}
maka keluaran nya adalah sbb :
Manusia berjalan menggunakan : Dua Kaki butuh makanan Kucing berjalan menggunakan : Empat Kaki Ayam berjalan menggunakan : Dua Kaki butuh makanan
Manusia berjalan menggunakan dua kaki, hewan ada yang berjalan menggunakan dua kaki dan juga empat kaki dan subkelas dari MahlukHidup tsb butuh makanan.
interface biasanya digunakan untuk handle multiple inheritance, dasarnya adalah karena sebuah subkelas hanya dapat diturunkan dari satu kelas induk. interface sendiri biasanya berisi deklarasi method saja untuk kemudian diimplementasikan pada class lain.
pada contoh code diatas kita tambahkan interface Bernafas dan interface BerkembangBiak yang merupakan ciri dari MahlukHidup sbb :
public interface Bernafas {
public void setBernafas(String nafas);
}
dan
public interface BerkembangBiak {
public void caraBerkembangBiak();
}
lalu kemudian ditambahkan keyword implements pada kelas Hewan seperti berikut :
public class Hewan extends MahlukHidup implements BerkembangBiak {
public Hewan() { }
public void caraBerkembangBiak() {
System.out.println("Hewan berkembang biak ada yang beranak dan ada yang bertelur");
}
}
terdapat satu tambahan konstuktor kosong untuk instansiasi dan implementasi method caraBerkembangBiak dari Kelas Hewan. lalu di kelas TestMahlukHidup nya buat suatu objek hewan untuk memanggil method caraBerkembangBiak.
Hewan hewan = new Hewan(); hewan.caraBerkembangBiak();
maka keluaran nya bertambah sbb :
Hewan berkembang biak ada yang beranak dan ada yang bertelur
atau jika kelas Hewan atau Manusia tersebut ingin mengimplementasikan juga cara bernafas, tinggal tambahkan saja seperti berikut : implements Bernafas, BerkembangBiak
artinya penggunaan abstract dan interface tergantung dari sistem dan program yang akan dibuat, kapan menggunakan abstract, pada saat kapan membutuhkan interface akan ditemukan dengan sendirinya pada saat pembangunan suatu sistem itu sendiri.
contoh code diatas merupakan cara sederhana penggunaan abstract dan interface, selebihnya CMIIW !!
tulisan-tulisan bagus lainnya mengenai abstract dan interface terdapat di link-link di bawah ini :