Sobes.tech
Junior — Middle

¿Cómo se debe proceder si en una clase se declaran dos interfaces que contienen métodos con los mismos nombres?

sobes.tech AI

Respuesta de la IA

Si en una clase se implementan dos interfaces que contienen métodos con los mismos nombres y firmas, entonces:

  • Si los métodos tienen la misma firma y tipo de retorno, basta con implementar un método que satisfaga a ambos interfaces.
  • Si los métodos con los mismos nombres tienen firmas diferentes (por ejemplo, diferentes parámetros), entonces es necesario implementar ambos métodos por separado.
  • Si los interfaces contienen métodos con los mismos nombres y firmas, pero con diferentes implementaciones por defecto (default methods), entonces en la clase es necesario sobrescribir explícitamente ese método y especificar qué implementación usar, o proporcionar la propia.

Ejemplo con conflicto de métodos default:

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

class MyClass : IFirst, ISecond {
    public void Method() {
        // Elegir explícitamente la implementación
        ((IFirst)this).Method();
        // o una propia
        Console.WriteLine("MyClass Method");
    }
}

Por lo tanto, en caso de conflicto de nombres de métodos de diferentes interfaces en C#, la clase debe resolver explícitamente la ambigüedad implementando el método por sí misma.