Pages

Jumat, 09 Desember 2011

Abstract Vs. Interface

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(); 
} }
F:\kumpulanmodul\Java>javac TestAbstract.java
F:\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:\kumpulanmodul\Java>javac PencariIlmu.java
F:\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.

0 komentar:

Posting Komentar

 

(c)2009 PD-Child. Based in Wordpress by wpthemesfree Created by Templates for Blogger