Kepada pengunjung Yang Terhormat

Saya harap anda bahagia dengan postingan di Blog ini. anda senang,saya Melayang

Sunday 24 January 2021

Overriding dan Overloading pada bahasa pemrograman Java

 

Overriding dan Overloading pada bahasa pemrograman Java

Setiap kali sebuah class mengextends class lain, class tersebut bisa mengoverride method yang ada  di  dalam  class  orang  tuanya.  Alasanya  karena  di  class  anaknya  ingin mengimplementasikan  method  tersebut  dengan  cara  yang  berbeda.  Misalnya  dalam  class MemberCustomer  akan  mengoverride  method  setId  untuk  memeriksa  apakah  id  yang dimasukkan bernilai null atau tidak, kalau nilainya null maka sebuah pesan dicetak ke dalam console.  Setelah  pesan  dicetak,  method  setId  yang  dipunyai  oleh  orang  tua  dari  class Customer,  hal  ini  bisa  dilakukan  dengan  menggunakan  keyword  super.  Contohnya  adalah

seperti ini :

import java.io.Serializable;

public MemberCustomer extends Customer implements Serializable {

  public void setId(Long aId) {

    if(id == null) {

       System.out.println("nilai id tidak boleh null");

    } else {

        super.setId(aId);

    }

}

Overriding method dilakukan dengan cara mendeklarasikan method yang sama persis denga method yang ada di class orang tuanya. Deklarasi dari method harus sama persis, mulai dari access  modifernya,  keyword  yang  digunakan,  nama  method,  jumlah  parameter  dan  letak parameter, hingga deklarasi throws exception.  Apa yang terjadi kalau misalnya kita mendeklarasikan sebuah variabel dengan tipe Customer tetapi  diinstansiasi  dengan  object  MemberCustomer,  kemudian  kita  panggil  method  setId? Apakah method setId yang ada dalam Customer atau MemberCustomer yang akan dieksekusi? Method yang dioverride akan terikat dengan instance dari variabel, bukan tipe dari variabel, jadi jawaban dari pertanyaan di atas adalah : yang dieksekusi adalah method setId dari class MemberCustomer bukan dari class Customer.  Mari kita tulis kode untuk melihat bagaimana aturan ini diimplementasikan dalam kode :

public OverridingTest{

   public static void main(String[] args){

     Customer c = new Customer();

     Customer mc = new MemberCustomer();

     Long id = null;

     //method setId yang dipanggil adalah yang dari class Customer karena c

     //dideklarasikan  dengan tipe Customer dan diinstansiasi dengan class

 

     //Customer

     c.setId(id);

     //method setId yang dipanggil adalah yang dari class MemberCustomer

     //walaupun mc dideklarasikan dengan tipe Customer

     mc.setId(id);

   }

}

Method overloading adalah salah satu feature dalam bahasa pemrograman Java, dimana dua buah method  bisa  dideklarasikan  dengan  nama  yang  sama  asal  argumenya  berbeda,  baik  dari jumlahnya,  tipenya  atau  urutan  dari  parameternya.  Berikut  ini  adalah  method  yang  berbeda walaupun namanya sama :

public void setId(Long aId) {}

public void setId(Integer aId) {}

public void setId(Long aId, boolean checkNull) {}

public void setId(boolean checkNull,Long aId) {}

Overloading dan overriding juga berlaku terhadap constructor, karena pada dasarnya constructor

adalah method.

No comments:

Post a Comment

iklan popcash