JavaRush /Java Blog /Random-ID /Perbedaan antara pengikatan awal dan pengikatan akhir di ...

Perbedaan antara pengikatan awal dan pengikatan akhir di Jawa

Dipublikasikan di grup Random-ID
Untuk memahami perbedaan antara pengikatan awal (statis) dan pengikatan akhir (dinamis) di Java, Anda harus terlebih dahulu memahami apa itu pengikatan . Linking artinya ada keterkaitan antara link dengan kode. Misalnya, variabel yang Anda referensikan terikat pada kode yang mendefinisikannya. Demikian pula, metode yang dipanggil terikat pada lokasi dalam kode di mana metode tersebut didefinisikan.
Perbedaan antara pengikatan awal dan pengikatan akhir di Java - 1
Ada dua jenis pengikatan metode dalam bahasa Java: pengikatan awal (juga disebut statis) dan pengikatan akhir (masing-masing dinamis) . Memanggil suatu metode di Java berarti bahwa metode tersebut terikat pada kode tertentu, baik pada waktu kompilasi atau pada saat run time, ketika program dijalankan dan objek dibuat. Seperti namanya, tautan statis lebih bersifat statis seperti yang terjadi pada waktu kompilasi, artinya kode “mengetahui” metode mana yang harus dipanggil setelah mengkompilasi kode sumber Java ke dalam file kelas. Dan karena ini mengacu pada tahap awal siklus hidup program, maka disebut juga pengikatan awal. Di sisi lain, tautan dinamis terjadi saat runtime, setelah program dijalankan oleh Java Virtual Machine. Dalam hal ini, metode mana yang dipanggil ditentukan oleh objek tertentu, sehingga informasi tidak tersedia pada waktu kompilasi karena objek dibuat pada waktu proses. Dan karena hal ini terjadi di akhir siklus hidup program, hal ini disebut pengikatan terlambat di Java.
Jadi, perbedaan mendasar antara pengikatan statis dan dinamis di Java adalah pengikatan statis terjadi lebih awal, pada waktu kompilasi, berdasarkan jenis variabel referensi, dan pengikatan dinamis terjadi kemudian, pada waktu proses, menggunakan objek konkret.
Mari kita lihat beberapa perbedaan lagi untuk memahami hal ini dengan lebih baik dan juga dapat menjawab pertanyaan yang sangat populer yang ditanyakan dalam wawancara Java.

Pengikatan Awal dan Akhir di Jawa

Ada banyak perbedaan antara pengikatan statis dan dinamis di Java, namun yang paling penting adalah bagaimana JVM menggunakannya. Pernahkah Anda bertanya-tanya bagaimana JVM memutuskan metode mana yang akan dipanggil ketika ada lebih dari satu metode dengan nama yang sama dalam cakupannya? Jika Anda pernah menggunakan metode yang membebani atau mengganti, Anda tahu bahwa di Java Anda dapat memiliki beberapa metode dengan nama yang sama. Dalam kasus Java, JVM menggunakan pengikatan statis dan dinamis untuk memilih metode yang diinginkan.

Contoh pengikatan statis dan dinamis di Java

Dalam program ini, Anda akan melihat bahwa pengikatan metode virtual tidak terjadi pada waktu kompilasi menggunakan pengikatan statis, karena ini akan memanggil metode dari superkelas, seperti yang terjadi pada metode statis yang diikat lebih awal. Jika metode dari subkelas dipanggil, objek tertentu digunakan untuk mengikat fungsi saat runtime, dan karenanya pengikatan dinamis digunakan untuk mengikat fungsi virtual.
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, pemanggilan metode premium()menghasilkan eksekusi metode dari subkelas, sedangkan pemanggilan metode category()menghasilkan eksekusi metode superkelas. Hal ini karena premium()- adalah metode virtual, yang diselesaikan menggunakan pengikatan akhir, sedangkan category()- merupakan metode statis, yang diselesaikan menggunakan pengikatan statis waktu kompilasi berdasarkan nama kelas.
Tertarik membaca tentang Java? Bergabunglah dengan grup Pengembang Java !

Perbedaan antara pengikatan awal dan pengikatan akhir di Jawa

Sekarang setelah Anda memahami cara Java mengikat pemanggilan metode dan cara kerja pengikatan statis dan dinamis, mari kita rekap perbedaan utama antara pengikatan awal dan pengikatan akhir di Java:
  1. Penautan statis terjadi pada waktu kompilasi, sedangkan penautan dinamis terjadi pada waktu proses.

  2. Karena penautan statis terjadi pada awal siklus hidup suatu program, hal ini disebut pengikatan awal. Demikian pula, pengikatan dinamis juga disebut pengikatan terlambat karena terjadi di kemudian hari dalam eksekusi program.

  3. Pengikatan statis digunakan dalam bahasa Java untuk menyelesaikan metode yang kelebihan beban, sedangkan pengikatan dinamis digunakan dalam bahasa Java untuk menyelesaikan metode yang diganti.

  4. Demikian pula, metode privat, statis, dan terminal diselesaikan menggunakan pengikatan statis karena tidak dapat ditimpa, sedangkan semua metode virtual diselesaikan menggunakan pengikatan dinamis.

  5. Dalam kasus pengikatan statis, bukan objek konkret yang digunakan, tetapi informasi tipe, yaitu tipe variabel referensi yang digunakan untuk menemukan metode yang diinginkan. Di sisi lain, pengikatan dinamis menggunakan objek tertentu untuk menemukan metode yang diinginkan di Java.
Inilah latihan yang bagus berdasarkan konsep pengikatan statis dan dinamis di Java. Bisakah Anda menjawab pertanyaan: "Apa yang akan dihasilkan ketika program berikut dijalankan?"
Perbedaan antara pengikatan awal dan pengikatan akhir di Java - 2
Apa yang akan dihasilkan oleh program ini? Collection, Setatau HashSet? Itu saja yang ingin kami sampaikan kepada Anda tentang perbedaan antara pengikatan awal (statis) dan pengikatan akhir (dinamis) di Java. Ini adalah salah satu pertanyaan wawancara telepon Java terbaik karena memberikan banyak kesempatan untuk menguji kedalaman pengetahuan kandidat. Ingatlah selalu bahwa metode privat , statis , dan final terikat menggunakan tautan statis , sedangkan metode virtual terikat menggunakan tautan dinamis . Demikian pula, contoh terbaik pengikatan statis adalah kelebihan metode, sedangkan penggantian bersifat dinamis. Sumber
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION