Kamis, 28 Maret 2013

JAVA - Method dan Construktor Overload

Setelah paham mengenai Method dan Class kita lanjutkan dengan mengenal Method Overload dan Construktor Overload.

Method Overload ialah method yang nama method-nya sama persis atau kembar. Tapi dengan syarat parameternya berbeda. Karena pembedanya ialah parameter-nya. Berarti terdapat lebih dari satu method  yang sama. Adanya method overload tak lain karena kebutuhan dalam menjalankan proses dengan konsep yang sama tapi berbeda bahan, sumber atau parameter yang ingin dimasukkan, tapi dengan fungsi atau tujuan yang sama.
Contoh :

    void transfer(int norek, double jml){
        if (saldo>jml){
            saldo-=jml;

            System.out.println("user telah melakukan transfer sejumlah Rp."+ jml +" pada nomor rekening "+ norek);
        }else{
            System.out.println("saldo tidak mencukupi");
        }
    }
    
    void transfer(int norek, String nmBank, double jml){
        
        if (saldo>jml){
            saldo-=jml;
            System.out.println("user telah melakukan transfer sejumlah Rp."+ jml +" pada nomor rekening "+ norek +" pada bank "+ nmBank);
        }else{
            System.out.println("saldo tidak mencukupi");
        }
    }


Coba kode diatas, meskipun dengan nama method yang sama jika kita ketikkan maka tidak akan terjadi error karena hal tersebut adalah hal yang wajar.

Berikutnya Construktor Overload. Sama halnya dengan method overload, terdapat lebih dari satu konstruktor dan pastinya sama, karena konstruktor harus sama dengan nama class-nya. Pembedanya juga sama dengan method overload yaitu struktur parameternya.
Contoh :

    ATM(String nm, String pas) {
        nama=nm;
        pwd=pas;
    }

    ATM(String nm, String pas, Double sld) {
        nama=nm;
        pwd=pas;
        saldo=sld;
    }



Kita lihat contoh penggunaan method overload diatas, jika berperilaku sebagai objek.
Source code :

System.out.println("Menu :");
System.out.println("1. Info saldo");
System.out.println("2. Penarikan");
System.out.println("3. Transfer");
System.out.println("4. Exit");
int tbl=input.nextInt();
switch(tbl){
   case 1:
      mesin.infoSaldo();
      u--;
      break;
   case 2:
      mesin.penarikan();
      u--;
      break;
   case 3:
      System.out.println("1. Bank sama \n2. Luar \n3. Batalkan");
      int ms=input.nextInt();
      int noreki;
      String nmBanki;
      double jmli;
      switch(ms){
       case 1:
         System.out.print("Nomor rekening tujuan : ");
         noreki=input.nextInt();
         System.out.print("Jumlah uang yang akan dikirim : Rp.");
         jmli=input.nextInt();
         mesin.transfer(noreki, jmli);
         break;
       case 2:
         System.out.print("Nomor rekening tujuan : ");
         noreki=input.nextInt();
         System.out.print("Nama bank tujuan : ");
         nmBanki=input.next();
         System.out.print("Jumlah uang yang akan dikirim : Rp");
         jmli=input.nextInt();
         mesin.transfer(noreki, nmBanki, jmli);
         break;
       default:
         break;
      }
         u--;
         break;
      default:
         break;
}


Lihat pada souce code yang dicetak tebal, diantara keduanya terdapat perbedaan, yaitu banyak parameter.
Dan pastinya mempunya keluaran yang berbeda tetapi dengan konsep yang sama.

Nah, sekian dulu.
Jika ada yang belum paham silahkan berkomentar.
Semoga bermanfaat.
Terima kasih.

Tidak ada komentar:

Posting Komentar