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
Linda Hamiltonasal
2024-12-06 00:12:12190semak imbas

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

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

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!

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