JavaRush /Blog Java /Random-MS /Perbezaan antara pengikatan awal dan akhir di Jawa

Perbezaan antara pengikatan awal dan akhir di Jawa

Diterbitkan dalam kumpulan
Untuk memahami perbezaan antara pengikatan awal (statik) dan pengikatan lewat (dinamik) di Jawa, anda mesti terlebih dahulu memahami apa itu pengikatan . Pautan bermakna terdapat hubungan antara pautan dan kod. Sebagai contoh, pembolehubah yang anda rujuk terikat pada kod di mana ia ditakrifkan. Begitu juga, kaedah yang dipanggil terikat pada lokasi dalam kod di mana ia ditakrifkan.
Perbezaan antara pengikatan awal dan akhir di Jawa - 1
Terdapat dua jenis pengikatan kaedah dalam bahasa Java: pengikatan awal (juga dipanggil statik) dan pengikatan lewat (masing-masing, dinamik) . Memanggil kaedah dalam Java bermakna kaedah itu terikat kepada kod tertentu, sama ada pada masa penyusunan atau pada masa jalankan, apabila program berjalan dan objek dicipta. Seperti namanya, pemautan statik adalah lebih statik kerana ia berlaku pada masa penyusunan, bermakna kod "tahu" kaedah mana yang perlu dipanggil selepas menyusun kod sumber Java ke dalam fail kelas. Dan kerana ini merujuk kepada peringkat awal kitaran hayat program, ia juga dipanggil pengikatan awal. Sebaliknya, pemautan dinamik berlaku pada masa jalan, selepas program dijalankan oleh Mesin Maya Java. Dalam kes ini, kaedah untuk memanggil ditentukan oleh objek tertentu, jadi maklumat tidak tersedia pada masa penyusunan kerana objek dicipta pada masa jalankan. Dan kerana ini berlaku lewat dalam kitaran hayat program, ia dipanggil pengikatan lewat di Jawa.
Jadi, perbezaan asas antara pengikatan statik dan dinamik di Jawa ialah yang pertama berlaku awal, pada masa penyusunan, berdasarkan jenis pembolehubah rujukan, dan yang terakhir berlaku kemudian, semasa runtime, menggunakan objek konkrit.
Mari lihat beberapa lagi perbezaan untuk memahami perkara ini dengan lebih baik dan juga dapat menjawab soalan yang sangat popular ini yang ditanya dalam temu bual Java.

Pengikatan Awal dan Akhir di Jawa

Terdapat banyak perbezaan antara pengikatan statik dan dinamik di Jawa, tetapi yang paling penting ialah cara JVM menggunakannya. Pernahkah anda terfikir bagaimana JVM memutuskan kaedah mana yang hendak dipanggil apabila terdapat lebih daripada satu kaedah dengan nama yang sama dalam skop? Jika anda pernah menggunakan kaedah terlebih muatan atau mengatasi, anda tahu bahawa di Java anda boleh mempunyai berbilang kaedah dengan nama yang sama. Dalam kes Java, JVM menggunakan pengikatan statik dan dinamik untuk memilih kaedah yang diingini.

Contoh pengikatan statik dan dinamik dalam Java

Dalam program ini, anda akan melihat bahawa pengikatan kaedah maya tidak berlaku pada masa penyusunan menggunakan pengikatan statik, kerana ini akan memanggil kaedah daripada superclass, seperti yang berlaku dengan kaedah statik yang terikat awal. Jika kaedah daripada subkelas dipanggil, objek tertentu digunakan untuk mengikat fungsi pada masa jalan, dan oleh itu pengikatan dinamik digunakan untuk mengikat fungsi maya.
public class Main {
  public static void main(String[] args) {

    // Пример статического и динамического связывания в Java
    Insurance current = new CarInsurance();

    // Динамическое связывание на основе an object
    int premium = current.premium();

    // Статическое связывание на основе класса
    String category = current.category();

    System.out.println("premium : " + premium);
    System.out.println("category : " + category);
  }
}

class Insurance{
  public static final int LOW = 100;

  public int premium(){
    return LOW;
  }

  public static String category(){
    return "Insurance";
  }

}

class CarInsurance extends Insurance{
  public static final int HIGH = 200;

  public int premium(){
    return HIGH;
  }

  public static String category(){
    return "Car Insurance";
  }

}
Результаты выполнения:

premium : 200
category : Insurance
Seperti yang anda lihat, panggilan kaedah premium()menghasilkan pelaksanaan kaedah daripada subkelas, manakala panggilan kaedah category()menghasilkan pelaksanaan kaedah superclass. Ini kerana premium()- ialah kaedah maya, yang diselesaikan menggunakan pengikatan lewat, manakala category()- ialah kaedah statik, yang diselesaikan menggunakan pengikatan statik masa kompilasi mengikut nama kelas.
Berminat membaca tentang Java? Sertai kumpulan Pembangun Java !

Perbezaan antara pengikatan awal dan akhir di Jawa

Memandangkan anda sudah memahaminya dan memahami cara Java mengikat kaedah panggilan dan cara pengikatan statik dan dinamik berfungsi, mari kita imbas semula perbezaan utama antara pengikatan awal dan lewat dalam Java:
  1. Pautan statik berlaku pada masa penyusunan, manakala pautan dinamik berlaku pada masa jalankan.

  2. Oleh kerana pemautan statik berlaku pada awal kitaran hayat program, ia dipanggil pengikatan awal. Begitu juga, pengikatan dinamik juga dipanggil pengikatan lewat kerana ia berlaku kemudian dalam pelaksanaan program.

  3. Pengikatan statik digunakan dalam bahasa Java untuk menyelesaikan kaedah yang terlebih beban manakala pengikatan dinamik digunakan dalam bahasa Java untuk menyelesaikan kaedah yang ditindih.

  4. Begitu juga, kaedah persendirian, statik dan terminal diselesaikan menggunakan pengikatan statik kerana ia tidak boleh ditindih, manakala semua kaedah maya diselesaikan menggunakan pengikatan dinamik.

  5. Dalam kes pengikatan statik, bukan objek konkrit yang digunakan, tetapi jenis maklumat, iaitu jenis pembolehubah rujukan digunakan untuk menemui kaedah yang dikehendaki. Sebaliknya, pengikatan dinamik menggunakan objek tertentu untuk mencari kaedah yang dikehendaki dalam Java.
Berikut ialah latihan yang baik berdasarkan konsep pengikatan statik dan dinamik di Jawa. Bolehkah anda menjawab soalan: "Apakah yang akan dikeluarkan apabila program berikut dilaksanakan?"
Perbezaan antara pengikatan awal dan akhir di Jawa - 2
Apakah yang akan dikeluarkan oleh program ini? Collection, Setatau HashSet? Itu sahaja yang kami ingin beritahu anda tentang perbezaan antara pengikatan awal (statik) dan lewat (dinamik) di Jawa. Ini adalah salah satu soalan temuduga telefon Java yang terbaik kerana ia menyediakan sedikit peluang untuk menguji kedalaman pengetahuan calon. Sentiasa ingat bahawa kaedah peribadi , statik dan akhir diikat menggunakan pemautan statik , manakala kaedah maya diikat menggunakan pemautan dinamik . Begitu juga, contoh terbaik pengikatan statik ialah kaedah terlebih beban, manakala mengatasi adalah dinamik. Sumber
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION