Static dan Dynamic Binding Java dan Fungsinya
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();}
}
dicetak dalam superclass.
Seperti yang terlihat dalam kedua kasus method print dari superclass yang dipanggil sebelumnya. Makan, perhatikan kenapa hal tersebut dapat terjadi:
- Dapat diciptakan satu object dari subclass dan satu object dari superclass dengan referensi dari superclass.
- 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.
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();}
}
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
- 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.
- Static binding menggunakan tipe informasi untuk binding sementara dynamic binding menggunakan object untuk menyelesaikan binding.
- 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.
Apa yang dimaksud dengan static binding pada Java?
BalasHapusStatic 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.
HapusBagaimana cara static binding bekerja pada Java?
BalasHapusStatic 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.
HapusApa yang dimaksud dengan dynamic binding pada Java?
BalasHapusDalam 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