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);