Junior — Middle
Como deve proceder-se se numa aula forem declarados dois interfaces contendo métodos com nomes iguais?
sobes.tech IA
Resposta da IA
Se numa classe forem implementadas duas interfaces que contêm métodos com os mesmos nomes e assinaturas, então:
- Se os métodos tiverem a mesma assinatura e tipo de retorno, basta implementar um método que satisfaça ambos.
- Se os métodos com os mesmos nomes tiverem assinaturas diferentes (por exemplo, parâmetros diferentes), então é necessário implementar ambos os métodos separadamente.
- Se as interfaces contiverem métodos com os mesmos nomes e assinaturas, mas com implementações padrão diferentes (default methods), então na classe é necessário sobrescrever explicitamente esse método e indicar qual implementação usar, ou fornecer a sua própria.
Exemplo com conflito 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() {
// Escolher explicitamente a implementação
((IFirst)this).Method();
// ou a sua própria implementação
Console.WriteLine("MyClass Method");
}
}
Assim, em caso de conflito de nomes de métodos de interfaces diferentes em C#, a classe deve resolver explicitamente a ambiguidade implementando o método por si própria.