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

Duvida sobre interfaces

qual a diferenca entre simplesmente declarar um metodo em uma classe e implementar uma interface e declarar um metodo nessa classe?

1 resposta
solução!

Visualize o código abaixo:

public interface Nome {

    public String getNome();
}

public class Funcionario implements Nome {

    private String nome;

    public Funcionario(String nome) {
        this.nome = nome;
    }

    @Override
    public String getNome() {
        return nome;
    }
}

public class Cliente implements Nome {

    private String nome;

     public Cliente(String nome) {
        this.nome = nome;
    }

    @Override
    public String getNome() {
        return nome;
    }
}


public static void main(String [] args){
    List<Nome> listaDeNomes = new ArrayList<>();
    Funcionario f1 = new Funcionario("João");
    Cliente c1 = new Cliente("Fernanda");
    listaDeNomes.add(f1);
    listaDeNomes.add(c1);

    for(Nome n : listaDeNomes) {
        System.out.println(n.getNome());
    }
}

Perceba o quão flexível o meu código ficou, pois por exemplo, agora eu preciso criar a classe fornecedor e empresas e quero também poder adicionar os mesmos dentro da minha lista de nomes, a única coisa que precisarei fazer é implementar a interface para estas duas novas classes e pronto, vou conseguir utilizar-las na minha lista.

Se você notar a própria class List é uma interface e uma das suas implementações é ArrayList, por isso que ali no código eu fiz isso:

List<Nome> listaDeNomes = new ArrayList<>();

Mas se eu não quisesse mais utilizar a implementação do ArrayList no meu código e sim começar a utilizar a LinkedList bastaria eu trocar a minha instância que eu atribuí a minha lista de nomes, como segue abaixo:

List<Nome> listaDeNomes = new LinkedList<>();

Espero ter ajudado :D