Dalam setiap bahasa - ada dua tahap untuk membuat kode biner akhir - kompilasi dan penautan (tentu saja, ada pemuatan tetapi itu tidak banyak berdampak di sini). Pada saat kompilasi, seseorang hanya perlu menempatkan kait (spesifikasi fungsi yang akan dipanggil) di tempat yang tepat. Linker sebenarnya bergabung mereka ketika kedua kode nyata tersedia. Sejauh ini tidak ada perbedaan antara C ++ dan Java.
Ada adalah , bagaimanapun, kebutuhan untuk C ++ untuk memiliki deklarasi dan definisi yang terpisah. Jika Anda menyimpan implementasinya di header, dan jika file header berubah, kode yang terhubung dengannya perlu dikompilasi ulang. Di mana seolah-olah definisi dalam file terpisah, kode hanya perlu dihubungkan kembali.
Memahami bahwa C ++ memang memiliki opsi untuk memiliki tautan statis yang menyiratkan bahwa kode objek diperbaiki bersama dengan aplikasi panggilan. Harap dicatat bahwa baik di C dan C ++, tidak valid untuk memiliki pemrograman dalam file header atau bahkan melakukan #include. itu hanya berarti bahwa Anda perlu repot tentang bagaimana menghubungkan terjadi dengan file objek ini.
Situasi di Jawa sangat berbeda. Setiap file kelas dikompilasi dengan file .class. Memang, kebutuhan untuk kompilasi fungsi kelas pemanggil yang disajikan sebagai bagian header dalam file .class. Namun, dalam Java final linking hanya dilakukan di dalam Runtime (mesin virtual) hanya dengan memberikan spesifikasi kode byte file kelas itu.
Lihat ini dan ini