qual a diferenca entre simplesmente declarar um metodo em uma classe e implementar uma interface e declarar um metodo nessa classe?
qual a diferenca entre simplesmente declarar um metodo em uma classe e implementar uma interface e declarar um metodo nessa classe?
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