ArrayList<Animal> zoo = new ArrayList<>(); Animal mosca = new Insecto(); Perro firulai = new Perro(); Insecto libelula = new Insecto(); firulai.setRaza("Bulldog"); zoo.add(libelula); zoo.add(mosca); zoo.add(firulai); for (Animal animal : zoo) { animal.hacerRuido(); System.out.println(animal instanceof Perro); if (animal instanceof Perro) { ((Perro) animal).getRaza(); Perro temp = (Perro) animal; System.out.println(temp.getRaza()); } }
ArrayList<IVolar> elementos = new ArrayList<>(); Pelicano p = new Pelicano("Pepe"); Murcielago m = new Murcielago(); Avion a = new Avion(); // Añadir a la lista cualquier clase que implemente IVolar elementos.add(a); elementos.add(p); elementos.add(m); // Recorrer la lista con un elemento de tipo IVolar for (IVolar elemento : elementos) { elemento.volar(); } // Lista de elementos que implementan INadar ArrayList<INadar> nadadores = new ArrayList<>(); Delfin f = new Delfin(); nadadores.add(f); nadadores.add(p); // Instanceof funciona para los Interfaces System.out.println(f instanceof INadar); // True System.out.println(p instanceof IVolar); // True // Recorrer la lista con un elemento de tipo INadar // Aquí hago un ArrayList de Object ArrayList<Object> foo = new ArrayList<>(); // Puedo añadir cualquier objeto de java foo.add(f); foo.add(a); foo.add(p); foo.add(m); ArrayList<IVolar> vuelan = new ArrayList<>(); ArrayList<INadar> nadan = new ArrayList<>(); for(Object o:foo) { if (o instanceof IVolar) { vuelan.add((IVolar) o); } if (o instanceof INadar) { nadan.add((INadar) o); } } System.out.println(vuelan); System.out.println(nadan);