Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Interface e Herança múltipla

Eu entendi que a interface resolve um problema de herança múltipla quando duas classes pai possuem um mesmo método:

public class Casa
{
    public void AbrirPorta();
}

public class Carro
{
    public void AbrirPorta();
}

public class Exemplo : Carro, Casa
{
    public void AbrirPorta()
    {

    }
}

Mas e quando duas interfaces possuem um mesmo método? Não acaba gerando o mesmo problema de "não saber de onde vem o método"??

public interface IPorta  {

    void abrir();
}

public interface IJanela {
    void abrir();
}

public class Casa : IPorta, IJanela {

    public void abrir(){
        // abrir porta ou abrir janela???
    }
}
1 resposta
solução!

Olá Vitor!

São dois casos parecidos, mas são diferentes, pois a interface apenas obriga que os métodos sejam implementados. Não é exatamente como se a interface fosse a solução para a herança múltipla, pois nas linguagens que tem este recurso, como no C++, a herança múltipla ocorre quando uma classe estende duas ou mais classes concretas com seus próprios atributos e métodos. Quando uma classe implementa várias interfaces, significa que essa classe terá que escrever o código dos métodos listados nas interfaces para conseguir compilar.

Neste caso funciona, justamente porque a interface (como foi dito) é um contrato que a classe concreta deve obedecer. Então uma classe concreta que implementa duas interfaces que impõe a mesma obrigação (mesmo nome de método e assinatura) funciona, pois neste caso, o que precisa para implementar as duas interfaces foi atendido.

Espero ter ajudado!