Eksekusi program Java membutuhkan dua langkah: kompilasi dan eksekusi (interpretasi), dan Java adalah bahasa pemrograman yang berorientasi objek. Ketika subclass dan kelas induk memiliki metode yang sama, subkelas menimpa metode kelas induk. Ketika program memanggil metode saat runtime, apakah metode kelas induk dipanggil atau subclass diganti, ini harus menjadi masalah yang kita temui ketika kita mulai belajar Java. Di sini kami pertama -tama menentukan metode mana yang akan diimplementasikan atau operasi variabel untuk menentukan panggilan ini disebut pengikatan.
Ada dua metode pengikatan di Java, satu mengikat statis, juga dikenal sebagai ikatan awal. Tipe lain adalah ikatan dinamis, juga dikenal sebagai ikatan terlambat.
Konsep pengikatan program:
Ikatan mengacu pada asosiasi panggilan metode dengan kelas (badan metode) di mana metode berada. Untuk Java, ikatan dibagi menjadi pengikatan statis dan pengikatan dinamis; atau itu disebut ikatan awal dan ikatan yang terlambat.
Ikatan statis (pengikatan pengikat awal):
Metode ini telah terikat sebelum program dijalankan dan diimplementasikan oleh kompiler atau program penghubung lainnya. Sebagai contoh: C. Untuk Java, itu dapat dipahami sebagai mengikat selama periode kompilasi program; Secara khusus, satu-satunya metode di Java adalah final, statis, pribadi dan konstruktor yang pra-binding
Ikatan Dinamis (Ikatan Akhir Selama Runtime):
Binding kemudian: mengikat sesuai dengan jenis objek spesifik saat runtime.
Jika suatu bahasa mengimplementasikan ikatan yang terlambat, perlu untuk menyediakan beberapa mekanisme untuk menentukan jenis objek selama operasi dan memanggil metode yang sesuai secara terpisah. Dengan kata lain, kompiler masih tidak tahu jenis objek saat ini, tetapi mekanisme panggilan metode dapat menyelidikinya dengan sendirinya dan menemukan badan metode yang benar. Bahasa yang berbeda memiliki cara berbeda untuk menerapkan ikatan yang terlambat. Dapat dipikirkan bahwa mereka semua perlu memasukkan jenis informasi khusus tertentu ke dalam objek.
Proses Binding Dinamis:
Ringkasan tentang mengikat:
Setelah memahami konsep ketiganya, kami menemukan bahwa Java termasuk dalam ikatan yang terlambat. Di Java, hampir semua metode terlambat mengikat, dan metode pengikatan dinamis adalah subkelas atau kelas dasar saat runtime. Tetapi ada juga fitur khusus. Karena metode statis dan metode akhir tidak dapat diwarisi, nilainya dapat ditentukan pada waktu kompilasi. Mereka termasuk ikatan awal. Yang perlu dicatat secara khusus, metode dan variabel anggota yang dinyatakan oleh pribadi tidak dapat diwarisi oleh subkelas, dan semua metode pribadi secara implisit ditentukan sebagai final (dari ini kita tahu bahwa metode yang dinyatakan sebagai tipe akhir adalah untuk mencegah metode tersebut ditimpa, dan secara efektif menutup pengikatan dinamis di Java). Pasca-ikatan di Java diimplementasikan oleh JVM. Kami tidak perlu secara eksplisit menyatakannya, tetapi C ++ berbeda. Kita harus secara eksplisit menyatakan bahwa suatu metode memiliki pengikat pasca. Transformasi ke atas atau polimorfisme dalam Java dicapai melalui pengikatan dinamis, sehingga memahami pengikatan dinamis berarti transformasi ke atas dan polimorfisme.
Untuk metode di Java, kecuali untuk final, statis, pribadi dan konstruktor yang mengikat awal, semua metode lain adalah pengikatan dinamis. Ikatan dinamis khas terjadi di bawah deklarasi konversi kelas induk dan kelas anak:
Misalnya: orang tua p = anak baru ();
Proses spesifiknya adalah sebagai berikut:
1. Kompiler memeriksa jenis deklarasi dan nama metode objek. Misalkan kita menyebut metode XF (ARGS) dan X telah dinyatakan sebagai objek Kelas C, maka kompiler akan mencantumkan semua metode bernama F dalam Kelas C dan metode yang diwarisi dari superclass kelas C.
2. Selanjutnya, kompiler memeriksa jenis parameter yang disediakan dalam panggilan metode. Jika satu jenis parameter di antara semua metode dengan nama F cocok dengan jenis parameter yang disediakan oleh panggilan paling banyak, maka metode ini dipanggil. Proses ini disebut "Parsing Kelebihan"
3. Ketika program berjalan dan menggunakan ikatan dinamis untuk memanggil metode, mesin virtual harus memanggil versi metode yang cocok dengan jenis aktual dari objek yang ditunjukkan oleh x. Dengan asumsi bahwa tipe aktual adalah d (subclass c), jika kelas D mendefinisikan f (string), maka metode ini dipanggil, jika tidak metode f (string) akan dicari dalam superclass d, dan sebagainya.
Pikiran Pertanyaan:
Cara menyediakan metode metode untuk menyelesaikan suatu tugas. Jika pengguna memiliki persyaratan khusus, ia perlu menyesuaikan metodenya sendiri?
Pengetahuan yang terlibat:
Kelas anak-orang tua, antarmuka, transformasi ke atas, pengikatan dinamis
Kode Khusus:
paket com.chengxuyuanzhilu; antarmuka publik myinterfaces {void doting ();} paket com.chengxuyuanzhilu; minuman kelas publik mengimplementasikan myinterfaces {@override public void doting () {System.println ("I'm Drinking Water"); }} paket com.chengxuyuanzhilu; Public Class Eat mengimplementasikan myinterfaces {@Override public void doting () {System.out.println ("I'm Eating"); }} Paket com.chengxuyuanzhilu; kelas public run mengimplementasikan myinterfaces {@Override public void doting () {System.out.println ("I'm Running"); }} paket com.chengxuyuanzhilu; kelas publik testdynamicbind {public static void main (string [] args) {myinterfaces my = null; my = new eat (); Bind (my); my = new minuman (); Bind (my); my = run baru (); Bind (my); } static void bind (myinterfaces my) {my.doting (); }}Di atas adalah semua tentang artikel ini, saya harap ini akan membantu untuk pembelajaran semua orang.