Maison > Java > javaDidacticiel > Comment Java gère-t-il les collisions de noms de méthodes dans l'héritage d'interface ?

Comment Java gère-t-il les collisions de noms de méthodes dans l'héritage d'interface ?

Linda Hamilton
Libérer: 2024-12-06 00:12:12
original
188 Les gens l'ont consulté

How Does Java Handle Method Name Collisions in Interface Inheritance?

Héritage d'interface avec collisions de noms de méthodes

Lorsque plusieurs interfaces définissent des méthodes avec des noms et des signatures identiques et sont implémentées par une seule classe, le compilateur identifie la méthode remplacée en considérant le suivant :

Compatibilité :

Si les méthodes des interfaces sont équivalentes aux méthodes (ayant des types de retour et des types de paramètres compatibles), alors une seule méthode est héritée. Dans ce cas, le compilateur n'a pas besoin de différencier à quelle interface appartient la méthode.

Exemple :

Considérez le code suivant :

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;
  }
}
Copier après la connexion

Dans ce scénario, la méthode f dans Test est considérée comme une implémentation à la fois pour A.f et B.f.

Incompatibilité :

Si les méthodes dans les interfaces ne sont pas équivalentes aux méthodes (ayant des types de retour ou des types de paramètres incompatibles), alors le compilateur émettra une erreur de compilation .

Exemple :

Dans le code suivant, le f La méthode dans Test entraînera une erreur de compilation car les types de retour dans A.f et B.f sont différents :

interface A {
  void f();
}

interface B {
  int f();
}

class Test implements A, B {
  @Override
  public int f() { 
    // Method implementation here
    return 0;
  }
}
Copier après la connexion

Conséquences :

Tant que les méthodes héritées Si plusieurs interfaces sont compatibles, il n'est pas nécessaire de distinguer quelle méthode appartient à quelle interface. Le compilateur les traite comme une méthode unique implémentée par la classe.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal