Blogs Blogs
Blogs »
Overloading : Dasar Pemrograman Java

OVERLOADING

1.     Penjelasan

Merupakan suatu kondisi dimana terdapat dua method atau lebih yang memiliki nama yang sama dalam suatu class tapi dengan nilai parameter yang berbeda.

2.     Overloading Method

2.1.              Penjelasan

Suatu class dapat mengandung beberapa method dengan nama yang sama tetapi dengan komposisi argumen yang berbeda.

2.2.  Contoh

//file : LumbungPadi.java

 

public class LumbungPadi{

   public int persediaan = 0;

   public int padiDisimpan = 0;

   public int padiDiambil = 0;

 

   public void hitungPersediaan( ){

     persediaan = padiDisimpan - padiDiambil;

   }

 

   public void simpanPadi(int tambahanPadi){

     padiDisimpan = padiDisimpan + tambahanPadi;

   }

 

   public void ambilPadi (int beratPadiYangDiambil){

     padiDiambil = padiDiambil + beratPadiYangDiambil;

   }

 

   public int  hitungPersediaanPadi( ){

     persediaan = padiDisimpan - padiDiambil;

     return persediaan;

   }

 

   public void cetakPersediaan( ){

     int persediaanPadiTerakhir = hitungPersediaanPadi();

     System.out.println( "Persediaan di lumbung = "+                              persediaanPadiTerakhir);

   }

}

 

 

//file : Petani.java

 

public class Petani{

    public int beratPanenan;

    public LumbungPadi lumbung;

 

 public void lakukanPanen ( ){

  beratPanenan = 150;

 } 

  

 public void  simpanPanenanDiLumbung(){

   lumbung.simpanPadi(50);

 }

 

 public void simpanPanenanDiLumbung(int jumlahPanenan ){

   lumbung.simpanPadi(jumlahPanenan);

 }

 

public void simpanPanenanDiLumbung(int jumlahPanenan,           LumbungPadi lb){

  lb.simpanPadi(jumlahPanenan);

 }

 

 public void ambilPanenanDariLumbung(int panenanDiambil){

   lumbung.ambilPadi(panenanDiambil);

 }

}

 

 

//file : KegiatanPanen.java

 

public class KegiatanPanen{

 public static void main(String[ ] args){

  LumbungPadi lumbungDesaSukatani =  new LumbungPadi ( );

  LumbungPadi lumbungDesaSukamaju =  new LumbungPadi( );

  Petani pakBakri = new Petani( );

  Petani daengBaso = new Petani( );

 

  pakBakri.lumbung = lumbungDesaSukamaju; 

  daengBaso.lumbung = lumbungDesaSukatani;

 

  pakBakri.lakukanPanen();

  pakBakri.simpanPanenanDiLumbung(10);

  pakBakri.simpanPanenanDiLumbung();

  pakBakri.simpanPanenanDiLumbung(40, lumbungDesaSukatani);

  pakBakri.ambilPanenanDariLumbung(10);

  daengBaso.lakukanPanen( );

  daengBaso.simpanPanenanDiLumbung(90);

 

  System.out.println("Lumbung Padi Sukatani");

  lumbungDesaSukatani.cetakPersediaan( );

  System.out.println("Lumbung Padi Sukamaju");

  lumbungDesaSukamaju.cetakPersediaan( );

 }

}

 

Keterangan :

-       Ada sedikit perubahan pada Contoh di atas. Perhatikan pada class KegiatanPanenan. Sekarang didefinisikan terdapat 2 buah obyek LumbungPadi, yaitu : lumbungDesaSukatani dan lumbungDesaSukamaju.

-       Perubahan lainnya adalah : obyek  pakBakri  mempunyai lumbung  default, yaitu  lumbungDesaSukamaju, sedangkan obyek daengBaso mempunyai lumbung default, yaitu lumbungDesaSukatani.

-       Perubahan berikutnya adalah pada class  Petani.  Pada class Petani, terdapat 3 buat method simpanPanenanDiLumbung( ), yaitu :

a.     simpanPanenanDiLumbung(), yang akan melakukan proses penambahan nilai variabel  padiDisimpan pada lumbung padi default sebesar 50 ( kilogram ).

b.    simpanPanenanDiLumbung(int jumlahPanenan), yang akan melakukan proses penambahan nilai variabel  padiDisimpan pada lumbung padi default sebesar nilai yang dilewatkan ke method ( nilai variabel jumlahPanenan ).

c.     simpanPanenanDiLumbung(int jumlahPanenan,LumbungPadi lb), yang akan melakukan proses penambahan nilai variabel padiDisimpan pada lumbung padi lb ( belum tentu merefer ke lumbung padi default ).

 

 

3.     Overloading Constructor

3.1.  Penjelasan

Sebuah class dapat memiliki lebih dari satu konstruktor. Sama seperti method, setiap konstruktor tidak dapat memiliki komposisi argumen yang sama.

3.2.  Contoh

//file : LumbungPadi2.java

 

public class LumbungPadi2{

private int persediaan;

private int jumlahDiambil;

private int jumlahDimasukkan;

 

    public LumbungPadi2(){

        persediaan = 0;

        jumlahDiambil = 0;

        jumlahDimasukkan = 0;

    }

 

    public LumbungPadi2(int psd ){

        persediaan = psd;

        jumlahDiambil = 0;

        jumlahDimasukkan = 0;

    }

 

    public LumbungPadi2(int psd, int jdimasukkan){

        persediaan = psd;

        jumlahDiambil = 0;

        jumlahDimasukkan = jdimasukkan; 

    }

}

 

 

//file : KegiatanPanen2.java

public class KegiatanPanen2{

     public static void main (String[] args){

          LumbungPadi2 lumbung1 = new LumbungPadi2();

          LumbungPadi2 lumbung2 = new LumbungPadi2(100);

          LumbungPadi2 lumbung3 = new LumbungPadi2 (10,50);

     }

}

 

Keterangan :

-       Pada class  LumbungPadi2 memiliki 3 buah konstruktor : 

a.  LumbungPadi2()

b.  LumbungPadi2(int)

c.  LumbungPadi2(int,int)

-       Pada class KegiatanPanen2 diinstanstiasi 3 obyek  LumbungPadi2,  yaitu lumbung1, lumbung2, dan lumbung3. Pada instanstiasi lumbung1, konstruktor  LumbungPadi2() dipanggil. Menurut konstruktor pada class LumbungPadi2, maka semua variabel instan pada  lumbung1 (persediaan, jumlahDiambil, dan jumlahDimasukkan) bernilai 0.

-       Sedangkan pada instanstiasi lumbung2, konstruktor LumbungPadi2(int psd)  dipanggil. Sesuai dengan  definisi konstruktor pada class LumbungPadi2, maka isi variabel  persediaan adalah 100, sedangkan jumlahDiambil, dan jumlahDimasukkan bernilai 0.

-       Pada instanstiasi  lumbung3, konstruktor LumbungPadi2(int psd,int jdimasukkan) dipanggil. Sesuai dengan definisi konstruktor pada class LumbungPadi2, maka isi variabel  persediaan adalah 10, jumlahDiambil adalah 0, dan  jumlahDimasukkan adalah 50.

-       Visualisasi memory untuk 3 object LumbungPadi2 :

 

 

 

End of – Layouts


  • Comments
Trackback URL: