Abstract vs Interface

Sabtu, 03 Desember 2011

1. Abstract (Sesuatu yang masih belum jelas)
Abstract class adalah class yang mempunyai setidaknya satu abstract method. Abstact class digunakan untuk mendefinisikan sifat-sifat dari kelas tertinggi. Abstract method adalah method yang tidak memiliki body (hanya deklarasi method). Implementasi dari isi abstract method tersebut dilakukan pada subclass. (*.unknown, Pemrograman Berbasis Obyek, 4, Adi S.Kom, Bahasa Pemrograman II, 19). 􀃆 abstract class tidak bisa diinstansiasi, tetapi diimplementasikan oleh subclass, baru subclass diinstansiasi menjadi object.
Contoh penulisan abstract method : public abstract void metoda();
Contoh :



public abstract class MakhlukHidup{
public void makan() {
System.out.println("nyummy…");
}
/*
method di bawah ini harus dioverride oleh subclassnya...
subclass-nya mengimplementasikan method ini :)
*/
public abstract void jalan();
}
class Manusia extends MakhlukHidup{
/*
modifier method jalan harus public
agar bisa mengoverride method abstract jalan
pada abstract class MakhlukHidup
*/
public void jalan(){
System.out.println("berdiri tegap...");
}
}

class Animal extends MakhlukHidup{
/*
modifier method jalan harus public
agar bisa mengoverride method abstract jalan
pada abstract class MakhlukHidup
*/
public void jalan(){
System.out.println("berdiri tidak tegap...");
}
}
/ ** Testing …. **/
class TestAbstract{
public static void main(String args[]){
Manusia andi = new Manusia();
andi.makan();
andi.jalan();
Animal kucing = new Animal();
kucing.makan();
kucing.jalan();
}
}

Ketika di compile dan di running, hasilnya :
F:\data samson\My Dedication\kumpulanmodul\Java>javac TestAbstract.java
F:\data samson\My Dedication\kumpulanmodul\Java>java TestAbstract
nyummy…
berdiri tegap...
nyummy…
berdiri tidak tegap...



2. Interface (abstractnya abstract)
Interface ibarat menandatangi kontrak. (JEDI,Java Interface, 10). Semua method yang ada dalam interface bersifat abstract. Subclass dari interface harus mendefinisikan semua abstract method yang ada di interface.

interface Orang{
void lakukanSesuatu();
}
interface Student extends Orang{
void lakukanExtraSesuatu();
}
interface Pekerja{
void lakukanJob();
}
public class PencariIlmu implements Student,Pekerja{
public void lakukanSesuatu(){
System.out.println("makan, tidur ...");
}
public void lakukanExtraSesuatu(){
System.out.println("belajar...");
}
public void lakukanJob(){
System.out.println("mengerjakan tugas...");
}
public static void main(String args[]){
System.out.println("Object toni....");
PencariIlmu toni = new PencariIlmu();
toni.lakukanSesuatu();
toni.lakukanExtraSesuatu();
toni.lakukanJob();
}
}
Hasil kompilasi dan run program
F:\data samson\My Dedication\kumpulanmodul\Java>javac PencariIlmu.java
F:\data samson\My Dedication\kumpulanmodul\Java>java PencariIlmu
Object toni....
makan, tidur ...
belajar...
mengerjakan tugas...


Dalam kode di atas, pencari ilmu menentukan sendiri cara mengimplementasi method-method yang ada pada kelas Student dan kelas Pekerja. Kita bisa saja membuat kelas lain yang bisa mengimplementasikan method-method dari kelas Student dan Pekerja secara berbeda, makanya,
interface diibaratkan menandatangani kontrak, misalnya, setiap manusia me-lakukan sesuatu, setiap Student lakukanExtraSesuatu, setiap pekerja lakukanJob, hanya saja, cara melakukan sesuatu tersebut dilakukan terserah kelas yang berisi implementasi dari interface-interface yang diimplementasikan. Jika digambar menggunakan class diagram, akan terbentuk seperti berikut :

0 komentar:

Posting Komentar

 
Vengeance Andritera © 2011 | Designed by Bingo Cash, in collaboration with Modern Warfare 3, VPS Hosting and Compare Web Hosting