2. A continuación, vamos a hacer un ejemplo de herencia, y
polimorfismo, comenzamos creando la siguiente clase
llamada HerAbsPol:
/*Jorge García Hernández*/
package herabspol;
public class HerAbsPol {
public void tocar() {
System.out.println("Instrumento.tocar()");
}
public String tipo() {
return "Instrumento";
}
public void afinar() {}
}
3.
4. Creamos otra clase en NetBeans llamada Guitarra
package herabspol;
public class Guitarra extends HerAbsPol {
public void tocar() {
System.out.println("Guitarra.tocar()");
}
public String tipo() { return "Guitarra"; }
public void afinar() {}
}
5.
6. Posteriormente creamos la clase Piano:
package herabspol;
public class Piano extends HerAbsPol{
public void tocar() {
System.out.println("Piano.tocar()");
}
public String tipo() { return "Piano"; }
public void afinar() {}
}
7.
8. Ahora la clase Saxofon:
package herabspol;
public class Saxofon extends HerAbsPol{
public void tocar() {
System.out.println("Saxofon.tocar()");
}
public String tipo() { return "Saxofon"; }
public void afinar() {}
}
9.
10. Por último creamos la clase principal:
package herabspol;
public class Musica {
static void afinar(HerAbsPol i) {
i.tocar();
}
static void afinarTodo(HerAbsPol[] e) {
for(int i = 0; i < e.length; i++)
afinar(e[i]);}
public static void main(String[] args) {
HerAbsPol[] orquesta = new HerAbsPol[5];
int i = 0;
orquesta[i++] = new Guitarra();
orquesta[i++] = new Piano();
orquesta[i++] = new Saxofon();
afinarTodo(orquesta);}
}
11.
12. Nos podemos dar cuenta de la aplicación de la herencia
con la sintaxis:
extends
Y en el caso del polimorfismo, lo aplicamos al redefinir
para cada clase los métodos utilizados en la clase principal
13. Y para la abstracción usaremos la palabra reservada
abstract:
package herabspol;
abstract class HerAbsPol {
public abstract void tocar() {
System.out.println("Instrumento.tocar()");
}
public String tipo() {
return "Instrumento";
}
public abstract void afinar() {}
}