Overloading : Dasar Pemrograman Java
May 7, 2010 4:56 PM
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