Rumah  >  Artikel  >  Java  >  Ralat Java: Ralat kelebihan beban kaedah, cara membetulkannya

Ralat Java: Ralat kelebihan beban kaedah, cara membetulkannya

王林
王林asal
2023-06-24 12:52:401865semak imbas

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) {}

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) {}
  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) {}

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) {}
  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;
}

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;
}

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!

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