Qual a vantagem disso?[RESOLVIDO]

2 respostas
guj1

Olá,

Se uma classe implementa uma interface ou estende outra classe, qual a vantagem se criar uma variável com tipo da interface ou superclasse já que implementando e estendendo já possuo acesso aos atributos e métodos?

Ex.:

public class Pessoa {}

public class Empregado extends Pessoa {}

public EmpregadoTeste {
private Pessoa empregado;

//Por que não criar assim
private Empregado empregado;
}

Uma utilização comum que vejo é nas Collections.

Grato.

2 Respostas

ViniGodoy

Nessa situação que você descreveu, geralmente não tem vantagem mesmo.

Mas tem em outras:

1. Métodos fábrica: Eles permitem que em um ponto do seu sistema saiba qual é a pessoa específica seja criada, mas que no resto do seu sistema, isso seja indiferente:
public Pessoa carregarPessoa() {
   //Aqui decide que tipo de pessoa criar e retornar
}

2. Criação de métodos para lidar com qualquer Pessoa:

public double calcularAumento(Pessoa empregado) {
   //Calcula o aumento de qualquer empregado
}

//Formas que poderia ser chamado
calcularAumento(pessoa);
calcularAumento(empregado);

3. Separar a implementação específica do uso. Veja uma descrição mais detalhada aqui:
http://www.guj.com.br/java/55387-duvida-basica-sobre-oo---instancias-#290673

guj1

Entendi.
Obrigado!

Criado 22 de fevereiro de 2015
Ultima resposta 24 de fev. de 2015
Respostas 2
Participantes 2