Declaração de variável e Polimorfismo

Pessoal, meu primeiro post \O/
(OBS: lol com O maiúsculo pq eu sou cabeçudo…)

1º pergunta:

class A { void façaAlgo() { Gritador meuGritador; if(...) { meuGritador = new Humano(); } else { meuGritador = new Macaco(); } meuGritador.grita(); // chamada polimórfica } }É possível declarar meuGritador como Gritador e instanciar meuGritador como Humano ou Macaco?
Este código eu peguei deste endereço: http://walfredo.lsd.ufcg.edu.br/cursos/2004/progII20041/aulas/o_que_e_polimorfismo.htm

2º pergunta:

Polimorfismo em Java só ocorre usando classes abstratas (com o modificador abstract)?
estou me baseando na Wikipédia: http://pt.wikipedia.org/wiki/Polimorfismo

Oi.
Pelo meu breve conhecimento em Java e OO, a resposta para a primeira pergunta é sim. Isso aí é polimorfismo.
É parecido com isso:

class Veiculo

As subclasses Carro e Barco:

class Carro extends Veiculo
class Barco extends Veiculo
Veiculo v1 = new Carro();
Veiculo v2 = new Barco();

Isso pode e é muito utilizado. Uma coisa que você vê bastante:

List<Objeto> lista = new ArrayList<Objeto>();

Que eu saiba, isso também é polimorfismo. Só que não pára por aí… tem muita coisa sobre isso.

Sobre a sua segunda pergunta,
Que eu saiba não, ocorre tanto com classes concretas quanto com classes abstratas e interfaces.

Eu acho que é isso.
Abraço.

Olá!
Tudo bem?

As respostas para suas perguntas estão abaixo, por Mantu, com ilustração e tudo!
http://www.guj.com.br/posts/list/49267.java
:smiley:

Eu me calo… o post do Mantu diz tudo.

[quote=maue]É possível declarar meuGritador como Gritador e instanciar meuGritador como Humano ou Macaco?
[/quote]
Sim

[quote]
Polimorfismo em Java só ocorre usando classes abstratas (com o modificador abstract)?
estou me baseando na Wikipédia: http://pt.wikipedia.org/wiki/Polimorfismo[/quote]

Polimorfismo é um conceito mais abrangente do que apenas variáveis polimorficas. Variáveis polimorficas são um
tipo de polimorfismo e provavelmente o mais conhecido, mas existem outros como sobrecarga , auto-boxing e
sombreamento.

O polimorfismo ligado a herança só existe em linguagens OO, mas outros tipos de polimorfismo podem ser encontrados em outras linguagens como a sobrecarga, por exemplo.