public interface IVolar { public void volar(); } public interface INadar { public void nadar(); } public interface ICorrer { public void correr(); } public interface IActivo { public boolean esActivo(); } public interface ISaludo { public void hola(); public void adios(); } public class Delfin implements INadar, IActivo{ @Override public void nadar() { System.out.println("Soy un delfín nadando en el inmenso mar"); } @Override public boolean esActivo() { // TODO Auto-generated method stub return true; } } public class Pato implements IVolar, ICorrer, INadar, IActivo{ @Override public void nadar() { System.out.println("Pato Nadando"); } @Override public void correr() { System.out.println("Corriendo"); } @Override public void volar() { System.out.println("Volando"); } @Override public boolean esActivo() { // TODO Auto-generated method stub return true; } } public class Submarino implements INadar, IActivo { @Override public void nadar() { System.out.println("Inmersión!!"); } @Override public boolean esActivo() { // TODO Auto-generated method stub return false; } } public static void main(String[] args) { // El mismo polimorfismo que teniamos con la herencia // Lo tenemos con los interfaces ArrayList<INadar> cosas = new ArrayList<>(); comprobar(new Delfin()); comprobar(new Pato()); comprobar(new Submarino()); List<String> alumnos = new ArrayList<String>(); Saludos pepe=new Saludos(); pepe.hola(); ISaludo ana=new Saludos(); ana.adios(); } public static void comprobar(IActivo elemento) { if (elemento.esActivo()) { System.out.println("A tope con la actividad"); } }