Clases Abstractas en Java: Metodos Abstractos y Ejemplos
Clases abstractas en Java: que son, como se crean, metodos abstractos vs concretos y cuando usarlas en vez de una interfaz.

Ultima actualizacion: 14 de julio de 2026
Una clase abstracta en Java es una clase que no puede instanciarse directamente y que puede contener metodos abstractos (sin implementacion). Sirve como plantilla para otras clases que heredan de ella, definiendo un contrato parcial.
Las clases abstractas son una característica importante de la programación orientada a objetos en Java. Una clase abstracta es una clase que no se puede instanciar directamente y se utiliza como base para otras clases. Una clase abstracta puede tener métodos abstractos, que son métodos que no tienen una implementación y deben ser implementados por las clases que heredan de la clase abstracta.
Vídeo explicativo
Una de las principales razones por las que se utilizan las clases abstractas es la de proporcionar una estructura común para las clases que heredan de ella. Por ejemplo, si tenemos una clase abstracta «FiguraGeométrica» con métodos abstractos para calcular el área y el perímetro de una figura, podemos tener clases concretas como «Círculo» y «Cuadrado» que heredan de «FiguraGeométrica» y proporcionan implementaciones específicas para calcular el área y el perímetro.
Además de los métodos abstractos, las clases abstractas también pueden tener métodos concretos, que son métodos que tienen una implementación. Estos métodos pueden ser utilizados directamente por las clases que heredan de la clase abstracta sin necesidad de implementar nuevamente el método.
Clase abstracta
Una clase abstracta es una clase que no se puede instanciar directamente y se utiliza como base para otras clases. Una clase abstracta puede tener métodos abstractos, que son métodos que no tienen una implementación y deben ser implementados por las clases que heredan de la clase abstracta. Además de los métodos abstractos, las clases abstractas también pueden tener métodos concretos, que son métodos que tienen una implementación.
Por ejemplo, podemos tener una clase abstracta llamada «Animal» con un método abstracto llamado «hacerRuido()«. Luego, podemos tener clases concretas como «Perro» y «Gato» que heredan de la clase «Animal» y proporcionan implementaciones específicas para el método «hacerRuido()«.
abstract class Animal {
// Método abstracto
public abstract void hacerRuido();
// Método concreto
public void dormir() {
System.out.println("El animal está durmiendo.");
}
}
A lo que nosotros podríamos usar la clase abstracta para crear clases hijas de nuestra clase abstracta Animal, en este caso Perro y Gato:
class Perro extends Animal {
// Implementación del método abstracto hacerRuido()
public void hacerRuido() {
System.out.println("Guau!");
}
}
class Gato extends Animal {
// Implementación del método abstracto hacerRuido()
public void hacerRuido() {
System.out.println("Miau!");
}
}
En este ejemplo, tenemos una clase abstracta «Animal» con un método abstracto «hacerRuido()» y un método concreto «dormir()«. Luego tenemos dos clases concretas «Perro» y «Gato» que heredan de «Animal» y proporcionan implementaciones específicas para el método «hacerRuido()«.
Tenga en cuenta que no podemos instanciar la clase «Animal» directamente, ya que es una clase abstracta. En su lugar, debemos utilizar una de las clases concretas que heredan de «Animal«, como «Perro» o «Gato«.
Animal perro = new Perro(); perro.hacerRuido(); // Imprime "Guau!" perro.dormir(); // Imprime "El animal está durmiendo."
Animal gato = new Gato(); gato.hacerRuido(); // Imprime "Miau!" gato.dormir(); // Imprime "El animal está durmiendo."
Método abstracto
Un método abstracto es un método que no tiene una implementación y que debe ser implementado por las clases que heredan de la clase que lo contiene. Los métodos abstractos deben ser declarados en clases abstractas y deben ser implementados por las clases que heredan de la clase abstracta.
abstract class Animal {
// Método abstracto
public abstract void hacerRuido();
}
Preguntas Frecuentes
Que es una clase abstracta en Java?
Una clase abstracta en Java es una clase que no puede instanciarse directamente con el operador new. Puede contener metodos abstractos (sin implementacion) y metodos concretos (con implementacion). Sirve como plantilla base para otras clases que heredan de ella.
Cual es la diferencia entre metodo abstracto y concreto?
Un metodo abstracto solo tiene la firma (sin cuerpo) y obliga a las clases hijas a implementarlo. Un metodo concreto tiene implementacion completa y se hereda tal cual. Una clase abstracta puede contener ambos tipos de metodos.
Clase abstracta vs interfaz: cual elegir?
Usa una clase abstracta cuando necesites compartir codigo entre clases relacionadas (herencia). Usa una interfaz cuando necesites definir un contrato que clases no relacionadas puedan implementar. Java permite implementar multiples interfaces pero solo extender una clase.
Cuando usar clase abstracta en vez de interfaz?
Usa clase abstracta cuando las clases compartan un estado comun (atributos) o comportamiento base. Usa interfaz cuando solo necesites definir que metodos debe tener una clase sin importar su jerarquia. Desde Java 8, las interfaces pueden tener metodos default, lo que reduce la brecha.
Como crear una clase abstracta en Java?
Usa la palabra clave abstract antes de la clase: public abstract class Animal { }. Dentro puedes definir metodos abstractos: public abstract void hacerSonido();. Las clases que hereden de Animal deben implementar todos los metodos abstractos o tambien ser abstractas.
Articulos Relacionados
¿Quieres acelerar tu carrera como desarrollador Java?
Reserva una Sesión de Estrategia Técnica gratuita y descubre cómo pasar de Junior a Senior en menos tiempo del que imaginas.
- Diagnóstico personalizado de tu nivel técnico
- Plan de acción para conseguir tu próximo ascenso
- Mentoría 1-a-1 enfocada en resultados
Plazas disponibles limitadas