Rumah > Java > javaTutorial > teks badan

Ralat Java: Ralat kelebihan beban kaedah, cara membetulkannya

王林
Lepaskan: 2023-06-24 12:52:40
asal
1867 orang telah melayarinya

Java ialah bahasa pengaturcaraan berorientasikan objek, dan kaedah lebih muatan adalah salah satu konsep penting. Kelebihan kaedah bermakna bahawa dalam kelas yang sama, boleh terdapat berbilang kaedah dengan nama kaedah yang sama tetapi senarai parameter yang berbeza. Walau bagaimanapun, semasa menulis kod, anda mungkin menghadapi ralat kelebihan muatan kaedah, yang akan menyebabkan kod gagal untuk menyusun atau menyebabkan ralat masa jalan. Artikel ini akan meneroka ralat beban lampau kaedah Java biasa dan cara menyelesaikannya.

  1. Ralat jenis parameter

Pembebanan kaedah memerlukan senarai parameter yang berbeza, tetapi ini bukan sahaja merujuk kepada bilangan parameter, tetapi juga jenis dan susunan parameter. Jika dua kaedah hanya mempunyai jenis parameter yang berbeza, tetapi bilangan dan susunan parameter adalah sama, maka ia tidak boleh ditakrifkan pada masa yang sama. Contohnya:

public void foo(int a, int b) {}  
public void foo(double a, double b) {}
Salin selepas log masuk

Kod ini mentakrifkan dua kaedah dengan nama kaedah yang sama, tetapi ia hanya mempunyai jenis parameter yang berbeza. Pengkompil Java tidak dapat menentukan kaedah yang harus dipanggil kerana jenis parameter yang diluluskan tidak ditentukan. Dalam kes ini, pengkompil akan melaporkan ralat "kaedah foo(int, int) sudah ditakrifkan dalam kelas xxxxx".

Untuk menyelesaikan masalah ini, pembangun perlu mentakrifkan semula nama kaedah atau menukar jenis atau susunan parameter supaya senarai parameter berbeza. Sebagai contoh, kod boleh difaktorkan semula seperti berikut:

public void fooInt(int a, int b) {}
public void fooDouble(double a, double b) {}
Salin selepas log masuk
  1. Bilangan parameter yang salah

Satu lagi kesilapan biasa ialah bilangan parameter dua kaedah adalah berbeza, tetapi jenis parameternya adalah sama, yang tidak dikenali dalam Java dibenarkan. Contohnya:

public void bar(int a) {}  
public void bar(int a, int b) {}
Salin selepas log masuk

Kod ini mentakrifkan dua kaedah dengan nama kaedah yang sama, tetapi bilangan parameternya berbeza. Kedua-dua kaedah ini sekali lagi menghalang konflik kerana pengkompil Java akan memilih kaedah yang betul berdasarkan bilangan parameter. Walau bagaimanapun, dalam kes ini, jika kita memanggil kaedah bar melalui hanya satu parameter, pengkompil Java tidak boleh memberitahu kaedah mana yang harus dipanggil. Dalam kes ini, pengkompil akan melaporkan ralat "bar kaedah(int) sudah ditakrifkan dalam kelas xxxxx".

Untuk menyelesaikan masalah ini, pembangun perlu mentakrifkan semula nama kaedah atau menambah parameter tambahan untuk menjadikan parameter kedua-dua kaedah berbeza. Sebagai contoh, kod boleh difaktorkan semula seperti berikut:

public void bar(int a) {}
public void bar(int a, int b, int c) {}
Salin selepas log masuk
  1. Nilai pulangan yang berbeza

Pembebanan kaedah Java memerlukan nama kaedah yang sama dan senarai parameter yang berbeza, tetapi nilai pulangan mungkin berbeza. Walau bagaimanapun, dalam amalan, jika nilai pulangan kaedah dengan nama yang sama adalah berbeza, pengkompil akan menganggap ini sebagai ralat.

Contohnya:

public int getResult(int a) {
  return a;
}
public double getResult(int a, int b) {
  return a * b;
}
Salin selepas log masuk

Kod ini mentakrifkan dua kaedah bernama "getResult", tetapi nilai pulangannya berbeza. Memandangkan pengkompil Java tidak dapat membezakan antara dua kaedah berdasarkan jenis nilai pulangan, pengkompil melaporkan ralat "method getResult(int) sudah ditakrifkan dalam kelas xxxx".

Untuk menyelesaikan masalah ini, pembangun perlu menjadikan jenis nilai pulangan kedua-dua kaedah sama. Sebagai contoh, kod boleh difaktorkan semula seperti berikut:

public int getResult(int a) {
  return a;
}
public int getResult(int a, int b) {
  return a * b;
}
Salin selepas log masuk

Dalam contoh ini, kami menukar jenis pulangan kaedah kedua daripada berganda kepada int, supaya jenis nilai pulangan kedua-dua kaedah adalah sama, yang boleh menghapuskan kompilasi kesilapan.

Ringkasnya, lebihan kaedah ialah teknik yang sangat berguna dalam pengaturcaraan Java, yang boleh meningkatkan kebolehbacaan dan kebolehselenggaraan kod. Walau bagaimanapun, dalam amalan, anda mungkin menghadapi beberapa ralat beban lampau kaedah biasa. Dengan memahami ralat ini, kami boleh mengoptimumkan dan menambah baik kod untuk menjadikannya lebih mantap dan terurus.

Atas ialah kandungan terperinci Ralat Java: Ralat kelebihan beban kaedah, cara membetulkannya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan