Interfaces III
Posted by Danny in Interfaces
Podemos ver que construimos un objeto (p) de tipo persona y se lo pasamos a la función hacerCantar. Esta función espera recibir un objeto Cantante, y una persona lo es, por tanto la recibe y llama al método cantar del objeto recibido.
Probemos a intentar pasar a la función hacerCantar en lugar del objeto Persona (p) un objeto String (texto), resultado: error de compilación.
Contruyamos ahora la clase Canario (Canario.java), pensando que también sabe cantar:
public class Canario implements Cantante
{
private int peso;
/* Aqui vendrían el resto de atributos y funciones propias de un canario */
public void cantar()
{
System.out.println("Pio Pio Pio");
}
}
Y ahora agreguemos en la clase ArranqueInterfaz el siguiente código, para crear un objeto canario y pasarselo a la función hacerCantar:
Canario c = new Canario();
hacerCantar(c);
Tras ejecutar comprobaremos que podemos pasar tanto una Persona como un Canario a la función hacerCantar, de tal manera que dentro de dicha función sólo accedamos a las funciones del interfaz y no habrá problemas. Por ejemplo, si pusiéramos:
c.SetNombre("Luis")
dentro de la función hacerPersona, podría funcionar si pasásemos un objeto Persona, pero no si pasamos uno de tipo Canario.