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
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
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", "japarecido@planalto.gov.br", 200);
Ou seja, em um programa é uma variável que contém diferentes tipos de objetos durante a execução do programa.
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.
Valew pelas respostas sanaram minhas duvidas…
E um exemplo de polimorfismo alguem poderia repassar??
Algo de simples compreensão =]
[quote=marcio_jagua]Valew pelas respostas sanaram minhas duvidas…
E um exemplo de polimorfismo alguem poderia repassar??
[/quote]
“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.
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.
[quote=sergiotaborda][quote=marcio_jagua]Valew pelas respostas sanaram minhas duvidas…
E um exemplo de polimorfismo alguem poderia repassar??
[/quote]
“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.[/quote]
Será que você não poderia exemplificar então, um método polimórfico?
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
[code]
public class Coruja extends Animal{
public void emitirSom(){
System.out.print(“crúúúú crúúúú.”);
}
} [/code]
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?
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.
[quote=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.[/quote]
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
[quote=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
[code]
public class Coruja extends Animal{
public void emitirSom(){
System.out.print(“crúúúú crúúúú.”);
}
} [/code]
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?
[/quote]