package com.trifulcas.herencia.interfaces; // El interface lo creo con la palabra clave interface public interface IVolar { // Dentro del interface defino funciones SIN IMPLEMENTACION // Igual que los métodos abstractos son una obligación de implementar la función // Un interface es como un contrato public void volar(); }
package com.trifulcas.herencia.interfaces; public interface INadar { public void nadar(); }
package com.trifulcas.herencia.interfaces; // En la clase para implementar un interface utilizamos implements public class Pelicano implements IVolar, INadar{ public Pelicano() { // TODO Auto-generated constructor stub } @Override public void volar() { System.out.println("Un majestuoso pelícano surcando el cielo"); } @Override public void nadar() { System.out.println("Un pelícano nadando"); } }
package com.trifulcas.herencia.interfaces; public class Murcielago implements IVolar { public Murcielago() { // TODO Auto-generated constructor stub } @Override public void volar() { System.out.println("Un murciélago volando en la noche"); } }
package com.trifulcas.herencia.interfaces; public class Avion implements IVolar { public Avion() { // TODO Auto-generated constructor stub } @Override public void volar() { System.out.println("Un avión surcando raudo las nubes"); } }
package com.trifulcas.herencia.interfaces; public class Delfin implements INadar { @Override public void nadar() { System.out.println("Un esbelto delfín surcando las procelosas aguas del océano"); } }
// Lista de elementos que implementan IVolar ArrayList<IVolar> elementos=new ArrayList<>(); Pelicano p=new Pelicano(); 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); // Recorrer la lista con un elemento de tipo INadar for(INadar elemento:nadadores) { elemento.nadar(); }