Rumah >Java >javaTutorial >Mengapa Java Mengehadkan Melebihkan Kaedah dengan Kaedah Setara Override?

Mengapa Java Mengehadkan Melebihkan Kaedah dengan Kaedah Setara Override?

Barbara Streisand
Barbara Streisandasal
2024-12-13 09:25:14278semak imbas

Why Does Java Restrict Method Overloading with Override-Equivalent Methods?

Pembebanan Kaedah: Sekatan Java pada Kaedah Override-Equivalent

Java melarang kehadiran dua kaedah dalam kelas dengan pemadaman yang sama walaupun parameter berbeza jenis. Kekangan ini berpunca daripada usaha bahasa untuk mengekalkan keserasian dengan kod warisan yang menggunakan jenis mentah.

Ralat kompilasi timbul apabila dua kaedah dengan jenis parameter yang berbeza-beza, seperti add(Set) dan add(Set

Sekatan ini wujud untuk mengelakkan konflik dalam situasi di mana kelas mewarisi daripada superclass menggunakan mentah jenis. Dalam kes sedemikian, pengkompil mesti menganggap jenis mentah sebagai menimpa-setara dengan jenis yang dijana untuk memastikan kaedah mengatasi yang betul.

Contohnya, pertimbangkan penukar Koleksi kelas warisan dengan kaedah toList(Collection c) menggunakan jenis mentah. Jika anda melanjutkan kelas ini dan menambah kaedah baharu keList(Collection c), kedua-dua kaedah akan menimpa-setara dan memenuhi keperluan override.

Namun, jika anda tersilap menambah kaedah ketiga keList( Pengumpulan c) kepada subkelas, pengkompil menghadapi kekaburan kerana ia tidak dapat menentukan kaedah yang hendak ditindih. Untuk menyelesaikan kekaburan ini, Java menguatkuasakan peraturan terhadap berbilang kaedah setara override.

Adalah penting untuk ambil perhatian bahawa sekatan ini bukan pengehadan pemadaman tetapi pilihan reka bentuk yang dibuat untuk menyokong keserasian dengan kod sedia ada. Dengan generik ditambahkan pada pengecam kaedah, memastikan keunikan akan dapat dicapai pada masa penyusunan tanpa memerlukan peraturan ini. Namun begitu, Java mengekalkan sekatan ini demi keserasian.

Atas ialah kandungan terperinci Mengapa Java Mengehadkan Melebihkan Kaedah dengan Kaedah Setara Override?. 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