Clases abstractas en Java
Estudiemos el siguiente ejemplo
abstract class Ejemplo {
abstract miMetodo( );
}
1. Para empezar se identifica la clase con la palabra reservada abstract
2. Esta clase abstracta tiene un método abstracto. Este método no tiene cuerpo, solo el
encabezado. Los métodos abstractos no necesitan instrucciones (cuerpo)
¿Para qué sirven las clases abstractas?
Solo sirven para implementar la herencia.
No se pueden instanciar, es decir, no puede crear objetos de este tipo
de clase.
En el ejemplo anterior, no puede crear un objeto de la clase Ejemplo.
Ejemplo de clase abstracta
abstract class Animal {
public abstract void habla( ); Sabemos que todos los
} animales hablan pero de
class Perro extends Animal { diferente manera, por eso
public void habla( ) { se hereda de la clase
System.out.println(“Guau guau”); Animal el método
} abstracto habla( ) y se
} implementa en la clase
class Gato extends Animal { Perro y en la clase Gato
public void habla( ) {
System.out.println(“Miau miau”);
}
}
¿Qué pasa si ?
class Gato extends Animal {
public void hablaGato() {
System.out.println(“Miau miau”);
}
}
Este código es incorrecto. Siempre que una clase hereda de una clase abstracta está obligada a
usar un método con el mismo nombre, pero con instrucciones dentro de las llaves (cuerpo).
El método habla( ) debe existir en la clase Gato
Referencia a la clase Animal
class Ejecucion { El código es correcto. Se crea
public static void main(String arg[]) { una referencia de la clase
Animal donGato = new Gato( ); abstracta “Animal”. Recuerde
Animal benito = new Perro( ); que no se puede generar un
} objeto de tipo Animal. Sin
} embargo, con la referencia
“Animal” se puede crear un
objeto de la clase “Gato” o de
la clase “Perro