- 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) { ArrayListlista1 = 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