Crear la interfaz PuedeCantar (que es capaz de cantar), un interfaz muy simple que sólo posee un método cantar.
PuedeCantar.java
public interface PuedeCantar {
public void cantar();
}
Crear la clase Persona que implemente el interfaz PuedeCantar y que cuando cante lo haga con las notas musicales.
Persona.java
public class Persona implements PuedeCantar {
public void cantar() {
System.out.println("do re mi fa sol la si");
}
}
Crear la clase Canario y Gallo que implemente el interfaz PuedeCantar y que muestre como cantan
Canario.java
... System.out.println("pio pio pio") ...
Gallo.java
... System.out.println("ki ki ri ki") ...
Realice el programa que haga cantar a un canario y un tenor.
ProgramaInterfaz.java
public class ProgramaInterfaz {
public static void main(String arg[]) {
Persona pavaroti = new Persona();
hacerCantar(pavaroti);
Canario piolin = new Canario();
hacerCantar(piolin);
Gallo claudio = new Gallo();
hacerCantar(claudio);
}
public static void hacerCantar(PuedeCantar cantor) {
cantor.cantar();
}
}
Ejercicio 2
Algunos seres pueden caminar y puede nadar estas dos capacidades son interfaces (PuedeCaminar.java y PuedeNadar.java).
Los mamiferos son animales que pueden moverse (Mamifero.java). El gato es un mamifero que puede nadar y moverse (Gato.java).
Un Loro puede caminar pero no puede nadar.
PuedeCaminar.java
public interface PuedeCaminar{
public void caminar();
}
PuedeNadar.java
public interface PuedeNadar {
public void nadar();
}
Mamifero.java
public class Mamifero {
String especie, color;
public void caminar() {
System.out.println("El mamífero camina");
}
}
Gato.java
public class Gato extends Mamifero implements PuedeCaminar, PuedeNadar {
private int numeroPatas = 4;
public void nadar() {
System.out.println("El gato nada");
}
}
Loro.java
public class Loro implements PuedeCaminar...
...System.out.println("El loro camina");
...
Interfaces.java
public class Interfaces {
public static void main(String[] args) {
Gato felix = new Gato();
felix.caminar();
felix.nadar();
Loro pepe = new Loro();
pepe.caminar();
}
}
Por que no se requiere escribir todos los métodos de las interfaces en la clase Gato?
Ejercicios adicionales
Agregue al ejercicio anterior la interface PuedeVolar.java
Agregue la superclase Aves.java
Herede la clase Avestruz.java (ave que solo camina)
Herede la clase Loro.java (ave que camina y vuela)
Herede la clase Murciélago.java (es un mamífero que vuela y camina)
Cree la clase Felino.java (es un mamifero que camina y puede nadar).
Modifique la clase Gato.java (es un Felino)
Cree la clase Tigre.java
disculpa si quisiera poner un combobox con las opciones persona,canario,gallo y un boton que cuando seleccione un valor del combo me diga como canta, como seria el codigo por favor he tratado pero no me sale
ResponderEliminarcorreo:roogle_25@hotmail.com
saludos, me gustaria que me explicaras detalladamente como funciona este metodo:
ResponderEliminarpublic static void hacerCantar(PuedeCantar cantor) {
cantor.cantar();
}
es el ultimo que aparece al final del ejemplo 1, entiendo que uno llama ese metodo para que retorne el sonido del tenor o del animal, pero no entiendo la parte de cantor.cantar(); y por que cuando pusiste la interface PuedeCantar como parametro colocaste la palabra cantor¿? que funcion hace cantor¿?
Disculpame... interfaces va "C" y no con "S". saludo, muy buenos los ejemplos.
ResponderEliminarSe implementa de modo que conozca al objeto que se le pasa no por una clase base, sino por el interface PuedeCantar. A dicha función le podemos pasar cualquier objeto que implemente el interface PuedeCantar, este o no en la misma jerarquía de clases. (el objeto seria cantor donde llamamos el metodo cantar mediante el . por eso es cantor.cantar();
ResponderEliminarSe implementa de modo que conozca al objeto que se le pasa no por una clase base, sino por el interface PuedeCantar. A dicha función le podemos pasar cualquier objeto que implemente el interface PuedeCantar, este o no en la misma jerarquía de clases. (el objeto seria cantor donde llamamos el metodo cantar mediante el . por eso es cantor.cantar();
ResponderEliminares una función definida de modo que conozca al objeto que se le pasa no por una clase base, sino por el interface PuedeCantar. A dicha función le podemos pasar cualquier objeto que implemente el interface PuedeCantar, este o no en la misma jerarquía de clases. y se manda llamar desde el objeto que creamos cantor Tipo cantar con el caracter . por eso es cantor.cantar();
ResponderEliminarAsi estamos diciendo que el objeto cantor puede acceder al metodo cantar creado en la interface PuedeCantar
buenísimo: no sabía nada sobre el tema, xq mi profesora es pésima explicando y solo pone a investigar..... gracias. ahora entiendo mejor el concepto y su praxis
ResponderEliminarhola me gusto saludos desde guarambare
ResponderEliminar