Sobes.tech
Junior — Middle

Comment doit-on procéder si une classe déclare deux interfaces contenant des méthodes portant les mêmes noms?

sobes.tech IA

Réponse de l'IA

Si une classe implémente deux interfaces contenant des méthodes avec les mêmes noms et signatures, alors :

  • Si les méthodes ont la même signature et le même type de retour, il suffit d’implémenter une seule méthode qui satisfera les deux interfaces.
  • Si les méthodes avec les mêmes noms ont des signatures différentes (par exemple, des paramètres différents), il faut implémenter les deux méthodes séparément.
  • Si les interfaces contiennent des méthodes avec les mêmes noms et signatures, mais avec des implémentations par défaut différentes, alors dans la classe il est nécessaire de redéfinir explicitement cette méthode et de préciser quelle implémentation utiliser, ou d’en fournir une propre.

Exemple avec conflit de méthodes default :

interface IFirst {
    void Method() => Console.WriteLine("First");
}
interface ISecond {
    void Method() => Console.WriteLine("Second");
}

class MyClass : IFirst, ISecond {
    public void Method() {
        // Choisir explicitement l’implémentation
        ((IFirst)this).Method();
        // ou sa propre implémentation
        Console.WriteLine("MyClass Method");
    }
}

Ainsi, en cas de conflit de noms de méthodes provenant de différentes interfaces en C#, la classe doit explicitement résoudre l’ambiguïté en implémentant la méthode elle-même.