1
resposta

[Dúvida] Dúvida na implementação do código

Eu não entendi como o método filtrar recebe um objeto do tipo classificável, sendo que classificável é uma interface. Poderia me explicar?? Nesse ponto aqui do testes ficou um pouco confuso de onde vem favorito, outro e primeiro.

FiltroRecomendacao filtro = new FiltroRecomendacao(); filtro.filtrar(favorito); filtro.filtrar(outro); filtro.filtrar(primeiro);

1 resposta

Oi, boa noite, tudo bem?

Quando você define como parâmetro de um método uma interface, todos objetos que implementam essa interface podem ser passados nesse parâmetro. Quando fazemos isso estamos usando o polimorfismo no Java.

Por exemplo:

public class FiltroRecomendacao {

    private String recomendacao;

    public void filtra(Classificavel classificavel) {
        if (classificavel.getClassificacao() >= 4)
            System.out.println("Está entre os preferidos do momento");
        else if (classificavel.getClassificacao() >= 2)
            System.out.println("Muito bem avaliado no momento");
        else
            System.out.println("Coloque na sua lista para assistir depois");

    }
}
public interface Classificavel {
    int getClassificacao();
}
FiltroRecomendacao filtro = new FiltroRecomendacao();

Filme meuFilme = new Filme("Poderoso chefão", 1980);
filtro.filtra(meuFilme);

Episodio ep = new Episodio();
ep.setNumero(1);
ep.setSerie(lost);
ep.setNome("Breaking Bad");
ep.setTotalDeVisualizacoes(300);
filtro.filtra(ep);

No caso acima, a classe Episodio e Filme implementa a interface Classificavel então elas podem ser passadas como parâmetro no método filtra() já que na definição desse método foi usado a interface Classificavel como parâmetro.

Espero ter ajudado! Bons estudos!