Minggu, Mei 16, 2021

Static vs Dynamic Binding pada Java

Dalam artikel ini akan dijelaskan perbandingan antara static binding dan dynamic binding dalam bahasa pemrograman Java.

Static Binding: binding yang dapat diselesaikan pada saat waktu kompilasi oleh kompilator dikenal sebagai static atau early binding. Binding dari method static, private, dan final diselesaikan pada waktu kompilasi program.

Binding dari Method Static, Final, dan Private Selalu Static
Static binding memiliki performa yang lebih baik karena tidak ada overhead ekstra yang dipersyaratkan dan kompilator mengetahui hal tersebut, bahwa method seperti itu tidak bisa overridden dan selalu dapat diakses oleh object dari class lokal. Karenanya, kompilator tidak memiliki kesulitan apapun untuk menentukan object dari class lokal. Inilah alasan kenapa method binding adalah selalu static

Perhatikan contoh berikut ini:

public class NewClass 

{

 

public static class superclass 

static void print() 

{System.out.println("dicetak"

+" dalam superclass.");} 

}

 

public static class subclass extends superclass 

static void print() 

{System.out.println("dicetak"

+" dalam subclass.");} 

 

public static void main(String[] args

{superclass A = new superclass(); 

superclass B = new subclass(); 

A.print(); 

B.print();} 

}

Output:
dicetak dalam superclass.
dicetak dalam superclass.

Seperti yang terlihat dalam kedua kasus method print dari superclass yang dipanggil sebelumnya. Makan, perhatikan kenapa hal tersebut dapat terjadi:
  • satu, Dapat diciptakan satu object dari subclass dan satu object dari superclass dengan referensi dari superclass.
  • dua, Ketika method print dari superclass adalah static, maka kompilator dapat mengetahui bahwa method tersebut tidak akan overridden dalam subclass dan karenya kompilator dapat mengenali hal tersebut, maka selama waktu kompilasi, method print akan dipanggil dan tidak akan terjadi ambiguitas sama sekali.

Pada latihan berikut ini, nilai referensi dapat diubah dari object B menuju subclass dan memeriksa hasil output-nya.

Dynamic Binding: pada dynamic binding kompilator tidak memutuskan method mana yang akan dipanggil. Overriding adalah sebuah contoh sempurna dari dynamic binding. Dalam overriding kedua parent dan child class memiliki method yang sama. 

Perhatikan contoh berikut ini:

public class NewClass 

 

public static class superclass 

void print() 

{System.out.println("dicetak"

+" dalam superclass.");} 

 

public static class subclass extends superclass 

@Override

void print() 

{System.out.println("dicetak"

+" dalam subclass.");} 

 

public static void main(String[] args

{superclass A = new superclass(); 

superclass B = new subclass(); 

A.print(); 

B.print();} 

}

Output:
dicetak dalam superclass.
dicetak dalam subclass.

Hasil dari output memiliki keluaran yang berbeda, karena:
  • Pada contoh program method tidak static.
  • Selama kompilasi, kompilator tidak memiliki gagasan method print mana yang akan dipanggil ketika kompilator hanya memiliki variabel referensi saja dan tidak oleh tipe dari object. Dan karena hal tersebut, maka binding akan ditunda menuju ke runtime dan versi koresponden dari print akan dipanggil berdasarkan tipe object-nya.

Point penting
  • satu, Anggota private, final, dan static  yang berupa method dan variabel menggunakan static binding sementara untuk method virtual pada method Java virtual yang bersifat default, binding dilakukan selama runtime berdasarkan runtime object.
  • dua, Static binding menggunakan tipe informasi untuk binding sementara dynamic binding menggunakan object untuk menyelesaikan binding.
  • tiga, Overloaded method dapat diselesaikan dengan memutuskan method mana yang akan dipanggil ketika terdapat lebih dari satu method dengan nama sama menggunakan static binding, sementara overridden method menggunakan dynamic binding saat runtime.

6 komentar:

  1. Apa yang dimaksud dengan static binding pada Java?

    BalasHapus
    Balasan
    1. Static binding pada java adalah mengacu pada pelaksanaan program dimana jenis object ditentukan atau diketahui pada waktu kompilasi program, yaitu ketika kompilator mengeksekusi kode program, maka kompilator akan mengetahui jenis object atau class yang dimiliki oleh object tersebut.

      Hapus
  2. Bagaimana cara static binding bekerja pada Java?

    BalasHapus
    Balasan
    1. Static binding terjadi pada waktu kompilasi sementara dimana dynamic binding terjadi pada waktu proses tersebut. Ketika proses overriding terjadi dan referensi jenis tipe parent ditetapkan oleh object dari jenis instance class, dimana proses binding tersebut diselesaikan selama waktu proses dijalankan pada Java.

      Hapus
  3. Apa yang dimaksud dengan dynamic binding pada Java?

    BalasHapus
    Balasan
    1. Dalam dynamic binding Java, method call terikat pada body method ketika runtime dijalankan. Hal ini juga dikenal sebagai late binding, yang dilakukan dengan menggunakan method instance.

      Hapus

Respon komentar 7 x 24 jam, so please be patient :D