Rumah  >  Artikel  >  Java  >  Mengapa Anda Tidak Boleh Membebankan Kaedah Berdasarkan Semata-mata pada Jenis Pulangan dalam Java?

Mengapa Anda Tidak Boleh Membebankan Kaedah Berdasarkan Semata-mata pada Jenis Pulangan dalam Java?

DDD
DDDasal
2024-11-01 17:10:31249semak imbas

Why Can't You Overload Methods Based Solely on Return Types in Java?

Melebihi muatan dengan Jenis Pulangan Berbeza

Dalam pengaturcaraan, terlebih muatan membenarkan fungsi dengan nama yang sama wujud dalam kelas atau ruang nama tetapi dengan parameter berbeza . Walau bagaimanapun, dalam Java, tidak mungkin untuk membebankan fungsi semata-mata berdasarkan jenis pemulangannya.

Mengapa tidak?

Pengkompil Java bergantung pada kedua-dua tandatangan fungsi dan jenis pulangan untuk mengenal pasti fungsi secara unik. Jika pengkompil membenarkan lebihan muatan mengikut jenis pulangan sahaja, ia akan mewujudkan kesamaran. Pertimbangkan contoh berikut:

<code class="java">public int foo() {...}
public float foo() {..}

...
foo(); // which one to call?</code>

Dalam kes ini, pengkompil tidak boleh menentukan kaedah foo yang hendak dilaksanakan berdasarkan jenis pulangan sahaja. Kekaburan ini akan membawa kepada ralat kompilasi.

Masa Depan Java

Pada masa ini tiada rancangan untuk mengubah tingkah laku ini dalam versi Java akan datang. Spesifikasi Bahasa Java secara eksplisit menyatakan bahawa "dua kaedah tidak boleh mempunyai tandatangan yang sama, walaupun ia mempunyai jenis pulangan yang berbeza."

C Pertimbangan

Melebihi muatan mengikut jenis pulangan ialah juga tidak mungkin dalam C. Sama seperti Java, pengkompil C menggunakan semua parameter, termasuk jenis pulangan, untuk membezakan antara fungsi dengan nama yang sama. Pendekatan ini memastikan bahawa panggilan fungsi tertentu sentiasa merujuk kepada pelaksanaan yang dimaksudkan.

Atas ialah kandungan terperinci Mengapa Anda Tidak Boleh Membebankan Kaedah Berdasarkan Semata-mata pada Jenis Pulangan dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn