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