CASTING IMPLICITO
Instrumento.java
public class Instrumento {
public void interpreta() {
System.out.println("Interpreta el instrumento");
}
public String queEs() {
return "Instrumento";
}
public void afinar() {}
}
Guitarra.java
public class Guitarra extends Instrumento {
public void interpreta() {
System.out.println("Interpreta la guitarra");
}
public String queEs() {
return "Guitarra";
}
}
Piano.java
public class Piano extends Instrumento {
public void interpreta() {
System.out.println("Interpreta el piano");
}
public String queEs() {
return "Piano";
}
}
Saxofon.java
public class Saxofon extends Instrumento {
public void interpreta() {
System.out.println("Interpreta el saxofon");
}
public String queEs() {
return "Saxofon";
}
}
Guzla.java
public class Guzla extends Guitarra {
public void interpreta() {
System.out.println("Interpreta la guzla");
}
public void afinar() {
System.out.println("Afino Guzla");
}
}
Ukelele.java
public class Ukelele extends Guitarra {
public void interpreta() {
System.out.println("Interpreta el Ukelele");
}
public String queEs() {
return "Ukelele";
}
}
Musica.java
public class Musica {
// El casting es inherente porque todos los metodos se encuentran
// declarados en la superclase.
void afinar(Instrumento i) {
i.interpreta();
}
void afinarTodo(Instrumento[] e) {
for(int i = 0; i < e.length; i++)
afinar(e[i]);
}
}
Main.java
public class Main {
public static void main(String[] args) {
Musica miMusica = new Musica();
Instrumento[] orquesta = new Instrumento[5];
orquesta[0] = new Guitarra();
orquesta[0] = new Piano();
orquesta[0] = new Saxofon();
orquesta[0] = new Guzla();
orquesta[0] = new Ukelele();
miMusica.afinarTodo(orquesta);
}
}
Dibujemos el diagrama de clases
No hay comentarios:
Publicar un comentario
Muchas gracias por su comentario, será revisado y pronto se publicará.