Java's final' vs. C 's 'const': The Nuances Beyond Similarity
Sementara tutorial Java for C programmer mencadangkan bahawa Kata kunci 'akhir' Java secara kasarnya sama dengan 'const' C, pemeriksaan lebih dekat mendedahkan perbezaan yang ketara.
Semantik Ahli Fungsi
Dalam C , menandakan fungsi ahli 'const' menandakan bahawa ia boleh digunakan pada kejadian 'const'. Java kekurangan ciri ini. Contohnya, dalam C , 'i.foo()' dibenarkan pada 'const Foo& i,' tetapi 'i.bar()' akan dilarang.
Penugasan Nilai
Di Java, pembolehubah akhir boleh diberikan sekali, tetapi kemudian. Ini tidak dibenarkan dalam C . Sebagai contoh, dalam Java, 'a = 10;' adalah sah dalam 'kelas awam Foo { void bar() { final int a; } }.' Walau bagaimanapun, dalam C , tugasan sedemikian akan menjadi tidak sah.
Pembolehubah Ahli
Kedua-dua Java dan C membenarkan pembolehubah ahli masing-masing menjadi 'final' atau 'const'. Di Java, pembolehubah ini mesti ditetapkan sebelum pembina selesai, manakala dalam C , senarai permulaan mesti digunakan.
Pencegahan Override
Kata kunci 'akhir' Java boleh digunakan untuk mengelakkan kaedah mengatasi. C (pra-C 11) tidak mempunyai keupayaan ini. Di Java, 'public final void foo() {}' dalam kelas asas tidak boleh ditindih dalam kelas terbitan. Walau bagaimanapun, dalam C (pra-C 11), penggantian boleh dilakukan.
Kemas Kini C 11
C 11 memperkenalkan 'akhir' untuk menyediakan semantik yang setara dengan akhir Java . Ini membenarkan menandakan kelas dan fungsi ahli sebagai 'akhir,' menghalang penggantian. Selain itu, 'final' boleh digabungkan dengan 'const' untuk fungsi ahli.
Kesimpulan
Walaupun 'final' Java dan C 'const' berkongsi persamaan, perbezaan halus wujud dalam cara ia digunakan pada semantik fungsi ahli, penetapan nilai, pembolehubah ahli dan pencegahan mengatasi. C 11 mengembangkan 'const' untuk memasukkan konsep 'final,' memberikan penjajaran yang lebih besar dengan Java dalam aspek ini.
Atas ialah kandungan terperinci `final` Java lwn. `const` C: Bagaimana Ia Berbeza Di Luar Permukaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!