Qual a vantagem?

2 respostas
R

Galera... estava olhando um exemplo no seguinte código:

public class Foo {
   public void doFooStuff() {
   }
}

public class Bar extends Foo {
   public void doBarStuff() {
   }
}

class Test {
   public static void main(String args[]) {
      Foo reallyABar = new Bar(); **
   }
}

** -> O que eu realmente não entendo... é porque que eu utilizo Foo nesta linha de código.. tudo bem, entendo que é correto fazer isto... seguindo o conceito de herança, mas queria saber qual é a vantagem de estar utilizando desta forma ao invés dessa...

class Test {
   public static void main(String args[]) {
      Bar reallyABar = new Bar();
   }
}

Vlw

2 Respostas

V

esse conceito eh parecido com o de utilizar interfaces, usar interfaces ou classes abstratas garante compatibilidade entre os códigos e permite que a manutenção seja mais fácil…

por exemplo, se um dia a classe Vector for deprecada do Java e vc tiver a declaração:

Vector meuVetor = new Vector();

, ao invés de:

List meuVetor = new Vector();

será necessário verificar a chamada de cada metodo a partir de meuVetor.metodo() pra verificar se nao estah imcompativel com a nova implementação.

outra vantagem é permitir que exista polimorfismo em tempo de execução, ou seja, vc declara a variavel como Map, mas dependendo de certos fatores ele será um TreeMap ou um HashMap, neste caso vc garante (através da contrato da interface Map) que tuas chamadas terão sempre a mesma assinatura para as possíveis classes implementadoras…

enfim, isso eh polimorfismo!

V

esse conceito eh parecido com o de utilizar interfaces, usar interfaces ou classes abstratas garante compatibilidade entre os códigos e permite que a manutenção seja mais fácil…

por exemplo, se um dia a classe Vector for deprecada do Java e vc tiver a declaração:

Vector meuVetor = new Vector();

, ao invés de:

List meuVetor = new Vector();

será necessário verificar a chamada de cada metodo a partir de meuVetor.metodo() pra verificar se nao estah imcompativel com a nova implementação.

outra vantagem é permitir que exista polimorfismo em tempo de execução, ou seja, vc declara a variavel como Map, mas dependendo de certos fatores ele será um TreeMap ou um HashMap, neste caso vc garante (através da contrato da interface Map) que tuas chamadas terão sempre a mesma assinatura para as possíveis classes implementadoras…

enfim, isso eh polimorfismo!

Criado 23 de agosto de 2005
Ultima resposta 23 de ago. de 2005
Respostas 2
Participantes 2