Duvida: Váriável Polimórfica!

10 respostas
M

Estou estudando sobre polimorfismo, porém não consegui entender o conceito de váriavel polimórfica…
Será que alguem poderia postar um conseito simples? E de preferencia com um exemplo, para esclarecer melhor…

Valew :smiley:

10 Respostas

T

Nunca tinha ouvido falar disso, mas pela definição pode ser algo como:

Object obj;
obj = new String ("teste");
obj = new Integer (10);
obj = new Cliente ("José Aparecido", "[email removido]", 200);

Ou seja, em um programa é uma variável que contém diferentes tipos de objetos durante a execução do programa.

L

Suponhamos que você tenha duas classes certo.

Public class A{
     metodo1(){

     }
     metodo 2(){

     }
}
Public class B extends A{
     metodo1(){

     }
     metodo 2(){

     }
     metodo3(){
     
     }
}
Public class Teste{
     public static void main(String[]args){
     
          A a = new B();
     
          a.metodo1();
          a.metodo2();
          a.metodo3();
     
          a = new A();
         
          a.metodo1();
          a.metodo2();
     }
}

pronto, aqui cara é o seguinte você ta vendo que eu criei uma referencia do tipo A, e estou chamando metodos tanto da classe A como da classe B.
mas tem um porem polimorfismo so pode ser aplicado da classe Pai para a classe filha você n
ao pode fazer;

B b = new A();

e quando você fizer estiver usando polimorfismo os metodos que você estará chamando sera o de hierarquia mais baixa. E caso você precise usar um metodo quer apenas a classe B tem, tera quer ser feito um casting.

M

Valew pelas respostas sanaram minhas duvidas…

E um exemplo de polimorfismo alguem poderia repassar??
Algo de simples compreensão =]

S

marcio_jagua:
Valew pelas respostas sanaram minhas duvidas…

E um exemplo de polimorfismo alguem poderia repassar??

“polimorfismo” é um conceito amplo. Existem vários tipos e é expresso de várias formas. Os exemplos acima são exemplos de polimorfismo. Variável polimorfica é uma das expressões de polimorfismo.

L
Public class Animal{

     public void emitirSom(){
          System.out.println("Som de um animal indefinido.");
     }

}
public class Cachorro extends Animal{

     public void emitirSom(){
          System.out.print("Som do cachorro.");
     }

}
public class TestaAnimal{
     public void main(String[]args){

         Animal a = new Cachorro();

         a.emitirSom();
     }
}

pronto cara acho que pelos exemplos acima já daria pra você ter imaginado alguma cois. Mas como pedido ta aqui o exemplo.

a saida do programinha será: Som do cachorro.

M

sergiotaborda:
marcio_jagua:
Valew pelas respostas sanaram minhas duvidas…

E um exemplo de polimorfismo alguem poderia repassar??

“polimorfismo” é um conceito amplo. Existem vários tipos e é expresso de várias formas. Os exemplos acima são exemplos de polimorfismo. Variável polimorfica é uma das expressões de polimorfismo.

Será que você não poderia exemplificar então, um método polimórfico?

A

cara o exemplo do cara ai acime ta pefeito como ele instanciou um animal cachorro poderia ser uma coruja que faz um som diferente...

entendeu isso e um polimorfismo de metodo.....

se ele tivesse feito assim

public class Coruja extends Animal{  
 
   public void emitirSom(){  
         System.out.print("crúúúú crúúúú.");  
    }    

 }
public class TestaAnimal{  
     public void main(String[]args){  
 
        Animal a = new Coruja();  
          a.emitirSom();  
     }  
 }

agora me diz qual ,metodo ele vai executar do animal....... a?

M

Polimorfismo = Do grego muitas formas. Ou seja, mesmo você chamando método emitir som ( usando o exemplo acima ) da classe Base ( animal), devido a uma manipulação interna de ponteiros implementadas em algumas linguagens, o compilador pode “escolher” em tempo de execucão ( ligação tardia ) dentre as funções emitir som das classes derivadas, a adequada. No caso só tem uma, a emitir som da coruja. Poderiam existir 10 animais que emitissem som, mas com o polimorfismo ele escolheria o adequado. Isso acontece porque a linguegem java implementa um mecanismo chamado Tipo de Referência Real.

N

lopima:
Suponhamos que você tenha duas classes certo.

Public class A{
     metodo1(){

     }
     metodo 2(){

     }
}
Public class B extends A{
     metodo1(){

     }
     metodo 2(){

     }
     metodo3(){
     
     }
}
Public class Teste{
     public static void main(String[]args){
     
          A a = new B();
     
          a.metodo1();
          a.metodo2();
          a.metodo3();
     
          a = new A();
         
          a.metodo1();
          a.metodo2();
     }
}

pronto, aqui cara é o seguinte você ta vendo que eu criei uma referencia do tipo A, e estou chamando metodos tanto da classe A como da classe B.
mas tem um porem polimorfismo so pode ser aplicado da classe Pai para a classe filha você n
ao pode fazer;

B b = new A();

e quando você fizer estiver usando polimorfismo os metodos que você estará chamando sera o de hierarquia mais baixa. E caso você precise usar um metodo quer apenas a classe B tem, tera quer ser feito um casting.

olá só uma correção quanto ao exemplo a cima, quando tratamos de polimorfismo, podemos pensar no conceito de heranca, quando um objeto herda de outro no caso classe B extends A entao podemos afirmar que B é um A, isso facilita o compreendimento de polimorfismo.

vou a um exemplo mais pratico,

classe funcionario extends classe pessoa

todo funcionario é uma pessoa, mais nem toda pessoa é obrigatoriamente um funcionario, pode haver outra classe que extends pessoa.

pronto agora quanto ao polimorfismo, nada mais é do que uma variavel “Generalizada” de tipo, ou seja, uma variavel do tipo pessoa pode receber qualque objeto que esteja em classes mais abaixo na hierarquia.

existe tambem o conceito de sobrecarga de metodos, onde um metodo tem o mesmo cabecalho, porem passa parametros diferentes, esse caso tambem é considerado polimorfismo, porem de metodos, diferente de sobre escrita, que um metodo tem o memso cabecalho e passa os mesmos parametros.

espero ter ajudado

N
alanbrasil1984:
cara o exemplo do cara ai acime ta pefeito como ele instanciou um animal cachorro poderia ser uma coruja que faz um som diferente...

entendeu isso e um polimorfismo de metodo.....

se ele tivesse feito assim

public class Coruja extends Animal{  
 
   public void emitirSom(){  
         System.out.print("crúúúú crúúúú.");  
    }    

 }

o java identifica que o animal é uma coruja e busca o metodo na classe certa

public class TestaAnimal{  
     public void main(String[]args){  
 
        Animal a = new Coruja();  
          a.emitirSom();  
     }  
 }

agora me diz qual ,metodo ele vai executar do animal....... a?

Criado 19 de maio de 2008
Ultima resposta 14 de mai. de 2009
Respostas 10
Participantes 7