- Usando as classes da linguagem Java de algumas bibliotecas que já estão disponíveis;
- Construir nossos próprios tipos e então entender como tirar proveito do Polimorfismo.
| Polimorfismo precisa ter uma hierarquia de classes com herança. Fonte imagem |
De acordo com a Wikipédia (fonte), podemos considerar o conceito de Polimorfismo:
"Na programação orientada a objetos, o polimorfismo permite que referências de tipos de classes mais abstratas representem o comportamento das classes concretas que referenciam. Assim, é possível tratar vários tipos de maneira homogênea (através da interface do tipo mais abstrato). O termo polimorfismo é originário do grego e significa "muitas formas" (poli = muitas, morphos = formas).
Vejamos o exemplo que fiz no vídeo:
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class Polimorfismo_parte1 {
/**
* POLIMORFISMO (aula pr‡tica - parte 1)
*
* Objetivos:
*
* 1) Entender o conceito de Polimorfismo na pr‡tica
* usando as classes j‡ existentes no Java
*
* @author Douglas Frari
* @see http://profdouglas.blogspot.com
*/
public static void main(String[] args) {
ArrayList lista1 = new ArrayList();
List lista2 = new ArrayList();
List lista3 = new LinkedList();
lista1.add("Elemento 1");
lista1.add("Elemento 2");
lista1.add("Elemento 3");
lista2.add("Elemento 1.1");
lista2.add("Elemento 2.1");
lista2.add("Elemento 3.1");
lista3.add("Elemento 1.1.1");
lista3.add("Elemento 2.1.1");
lista3.add("Elemento 3.1.1");
// imprimir elementos
imprimirLista(lista1);
imprimirLista(lista2);
imprimirLista(lista3);
}
static void imprimirLista(final List lista) {
for (String itemLista : lista) {
System.out.println(itemLista);
}
}
}
Conclusões
O conceito de polimorfismo em programação orientada a objetos é bastante útil para compreender como os objetos podem assumir diferentes responsabilidades no programa, dependendo de como foram declarados e como são instanciados pode-se reusar estruturas e operações. O resultado disso pode não ser tão útil assim, mas é. Quando se entende o conceito começamos a pensar de forma a favorecer o reuso e assim minimizamos a quantidade de linhas de código programáveis.
Um comentário:
Douglas, poderia me tirar uma dúvida, por favor?
Se complementar seu código com a linha List lista4 = new List(); é apresentado o erro: List is abstract; cannot be instantiated, o que há de errado? Obrigado desde já.
Postar um comentário