Rumah > Java > javaTutorial > Bagaimanakah Java Mengendalikan Perlanggaran Nama Kaedah dalam Pewarisan Antara Muka?

Bagaimanakah Java Mengendalikan Perlanggaran Nama Kaedah dalam Pewarisan Antara Muka?

Linda Hamilton
Lepaskan: 2024-12-06 00:12:12
asal
189 orang telah melayarinya

How Does Java Handle Method Name Collisions in Interface Inheritance?

Warisan Antara Muka dengan Perlanggaran Nama Kaedah

Apabila berbilang antara muka mentakrifkan kaedah dengan nama dan tandatangan yang sama dan dilaksanakan oleh satu kelas, pengkompil mengenal pasti kaedah yang ditindih dengan mempertimbangkan berikut:

Keserasian:

Jika kaedah dalam antara muka adalah setara kaedah (mempunyai jenis pulangan yang serasi dan jenis parameter), maka hanya satu kaedah diwarisi. Dalam kes ini, pengkompil tidak perlu membezakan antara muka kaedah mana yang dimiliki.

Contoh:

Pertimbangkan kod berikut:

interface A {
  int f();
}

interface B {
  int f();
}

class Test implements A, B {
  // Only one @Override annotation required
  @Override
  public int f() { 
    // Method implementation here
    return 0;
  }
}
Salin selepas log masuk

Dalam senario ini, kaedah f dalam Ujian dianggap sebagai pelaksanaan untuk kedua-dua A.f dan B.f.

Ketidakserasian:

Jika kaedah dalam antara muka bukan kaedah yang setara (mempunyai jenis pulangan yang tidak serasi atau jenis parameter), maka pengkompil akan mengeluarkan kompilasi ralat.

Contoh:

Dalam kod berikut, kaedah f dalam Ujian akan menghasilkan ralat penyusunan kerana jenis pulangan dalam A.f dan B.f adalah berbeza:

interface A {
  void f();
}

interface B {
  int f();
}

class Test implements A, B {
  @Override
  public int f() { 
    // Method implementation here
    return 0;
  }
}
Salin selepas log masuk

Akibat:

Asalkan kaedah yang diwarisi daripada berbilang antara muka adalah serasi, tidak perlu membezakan kaedah mana yang dimiliki oleh antara muka yang mana. Pengkompil menganggapnya sebagai kaedah tunggal yang dilaksanakan oleh kelas.

Atas ialah kandungan terperinci Bagaimanakah Java Mengendalikan Perlanggaran Nama Kaedah dalam Pewarisan Antara Muka?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan