Apakah mungkin untuk menulis metode virtual di Jawa, seperti yang akan dilakukan di C ++?
Atau, apakah ada pendekatan Java yang tepat yang dapat Anda terapkan yang menghasilkan perilaku serupa? Bisakah saya punya beberapa contoh?
java
virtual
virtual-functions
yonatan
sumber
sumber
Bisakah Anda menulis fungsi virtual di Java?
Iya. Faktanya, semua metode instance di Java adalah virtual secara default. Hanya metode tertentu yang tidak virtual:
Berikut ini beberapa contohnya:
Fungsi virtual "Normal"
Contoh berikut adalah dari versi lama halaman wikipedia yang disebutkan dalam jawaban lain.
Keluaran:
Contoh dengan fungsi virtual dengan antarmuka
Metode antarmuka Java semuanya virtual. Mereka harus virtual karena mereka bergantung pada kelas implementasi untuk menyediakan implementasi metode. Kode yang akan dieksekusi hanya akan dipilih pada saat run time.
Sebagai contoh:
Contoh dengan fungsi virtual dengan kelas abstrak.
Mirip dengan antarmuka Kelas abstrak harus berisi metode virtual karena mereka bergantung pada implementasi perluasan kelas. Sebagai contoh:
sumber
Semua fungsi di Java adalah virtual secara default.
Anda harus keluar dari cara Anda untuk menulis fungsi non-virtual dengan menambahkan kata kunci "final".
Ini kebalikan dari standar C ++ / C #. Fungsi kelas adalah non-virtual secara default; Anda membuatnya dengan menambahkan pengubah "virtual".
sumber
Semua metode instance non-pribadi adalah virtual secara default di Jawa.
Dalam C ++, metode pribadi bisa virtual. Ini dapat dieksploitasi untuk idiom non-virtual-interface (NVI). Di Jawa, Anda harus membuat metode NVI yang dapat ditimpa dilindungi.
Dari Spesifikasi Bahasa Jawa, v3:
sumber
Ya, Anda dapat menulis "fungsi" virtual di Jawa.
sumber
Di Java, semua variabel & fungsi publik (non-pribadi) adalah Virtual secara default. Selain itu variabel & fungsi yang menggunakan kata kunci akhir tidak virtual .
sumber