Veamos como primer post en este blog las Clases Abstractas de Java. El concepto es sencillo:
abstract class Ejemplo{ abstract miMetodo(); }
Estudiemos pues este sencillo ejemplo:
- Para empezar identificamos la clase abstracta con la palabra reservada
abstract
. - Esta clase abstracta tiene un método abstracto. Por cierto, este no tiene cuerpo (body). Eso es porque los métodos abstractos no necesitan cuerpo.
¿Y qué pasa si…?
abstract class OtroEjemplo{ }
¡Caramba! ¿Correcto o incorrecto? Esto es completamente correcto… Puesto que las clases abstractas tienen de 0 a N métodos abstractos. Sin embargo, el chiste de una clase abstracta es que precisamente tenga al menos un método abstracto.
¿Y entonces para qué nos sirven las clases abstractas? Las clases abstractas cumplen una función muy especial… Sólo sirven para implementar la herencia. Otro detalle: No se pueden instanciar. ¡Jamás! Es imposible encontrar un objeto de las clases Ejemplo
y OtroEjemplo
.
Vamos entrando en detalle…
Clase Animal:
abstract class Animal{ public abstract void habla(); }
Clase Perro:
class Perro extends Animal{ public void habla(){ System.out.println("Guau, guau!"); } }
y la clase Gato:
class Gato extends Animal{ public void habla(){ System.out.println("Miau, miau!"); } }
Este ejemplo es mucho más claro… Sabemos que todos los animales hablan, pero no todos lo hacen de la misma forma… Por eso heredamos de la clase Animal el método abstracto `habla` y lo implementamos en las clases Perro
y Gato
… ¿Qué pasa si…?
class Gato extends Animal{ public void hablaGato(){ System.out.println("Miau, miau"); } }
Este código es totalmente incorrecto. Siempre que una clase hereda de una clase abstracta está obligada a usar un método con el mismo nombre, pero esta vez con sentencias dentro de las { llaves }.
public class Eject{ public static void main(String... args){ Animal donGato = new Gato(); Animal benitoBodoque = new Gato(); } }
Hasta este momento el código es correcto. Estamos creando una referencia de la clase abstracta `Animal`. Pero recordemos, no podemos generar un objeto de tipo `Animal`. Sin embargo, podemos con la referencia de la clase `Animal` crear un objeto de la clase `Gato` o de la clase `Perro`.
Y en Java esas son las clases abstractas…
Hola amigo te pasastes con la enseñanza!! me sirvió mucho la cátedra, espero que tengas mucha más información en tu web.. saludos y éxitos!
Claro que si, comentarios de agradecimiento como ese me dan ánimo para seguir escribiendo más posts y tratar de que sean mejores!
huy hermano se fajo es una explicación sencilla y directa al grano sin enredos ni complicaciones gracias por la informacion
maestro de maestros
Oye y como muestro los resultados soy principieante…….?
Que buen post Omar, lo mejor de todo es que es sencillo y preciso para comprender las clases abstractas de java ….. muchas gracias !!!!
hermano de verdad muy bueno me podrias regalar tu link de face para agregarlo ?? es muy sencillo como explicas gracias
muy bueno graacias !!!!!!!!!! sencillo y perfecto
ufffff parcero muy buena explicacion muchas gracias desde Colombia
gracias por la informacion me fue de mucha ayuda.
hermano excelente explicacion en forma clara i sencilla , muchas gracias
Buen post, podrias poner algunos ejemplos más ya que aun me quedan dudas.
Saludos
exelente explicacion graxias
Viejo, sirve de mucho.. realmente explica lo que tiene que explicar
gracias y saludos
Muchas Gracias por la explicacion
o muy buena explicación,,
muchas gracias por tu explicacion, asi se deverian explicar todas las cosas. Muy buen material. Gracias
hey! mil gracias muy buena la explicación, siendo una novata la entendí muy sencilla
Pues yo sigo sin enterarme para qué sirve. Por qué añadir abstrac? si haciendo una clase normal no te limita tanto,para complicarte la vida? No entiendo lo siento. Java me está matando ya.
Y supongo que si pregunto esto es porque no me he enterado de la misa la mitad, ya lo sé. Pero es que la cabeza ya no me da para más!!!! T_T