Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dar NEW em interfaces

Na resposta do exercício diz que não podemos darnew em classes abstratas ou interfaces, mas acho que está errado.

Quando vamos implementar um método de uma interface dentro de um construtor nós usamos o new pra criar uma classe anônima, por exemplo.

2 respostas
solução!

Opa Ley, tudo bem?

Então, nós não podemos dar new em uma interface, pois os metodos não possuem corpo, afinal é tudo abstrato, o correto é sempre criar uma implementação daquela interface. Entendido isso, o java nos auxilia a não precisar criar um arquivo, criando essas classes anônimas, como o proprio nome já diz, você está instânciando uma classe a partir daquela interface.

Por exemplo: Runnable r = new Runnable(); // Esse código não rola

Agora um caso que funciona:

Runnable r = new Runnable() { 
     public void run() {
        System.out.println("Eai Ley");
    } 
};

Pois, o que fazemos nesse segundo caso estamos criando como se fosse uma implementação, seria o mesmo que fazer aqui:

class EaiParaOLeiRunnable implements Runnable {
    public void run() {
        System.out.println("Eai Ley");
    } 
}


Runnable r = new EaiParaOLeiRunnable();

Resumindo, seria só uma forma mais simples de criar uma classe, porém, estamos dando new na classe e não na interface/classe abstrata, isso precisa estar bem claro.

Espero que tenha conseguido esclarecer!

Qualquer duvida estou a disposição :)

ainda faço muita confusão com essas interfaces.. Mas obrigado pela explicação!