🧠 ¿Qué es una clase abstracta?
- Es una clase que no puede ser instanciada directamente.
- Se usa como base para otras clases que comparten una lógica común.
- Puede contener:
- Métodos abstractos: sin implementación, obligan a las subclases a definirlos.
- Métodos concretos: con implementación, pueden ser heredados directamente.
Puede contener métodos abstractos (sin implementación) y concretos (con lógica).
No se puede instanciar directamente.
🧪 Ejemplo en Java
abstract class Animal {
public abstract void hacerRuido();
public void dormir() {
System.out.println("El animal está durmiendo.");
}
}
class Perro extends Animal {
public void hacerRuido() {
System.out.println("Guau!");
}
}
class Gato extends Animal {
public void hacerRuido() {
System.out.println("Miau!");
}
}
🔍 Nota: Las clases Perro y Gato heredan de Animal y deben implementar hacerRuido(). ¿Cuándo usar una clase abstracta?
• Cuando querés definir una plantilla común para un conjunto de clases.
• Si necesitás forzar la implementación de ciertos métodos en las subclases.
• Para evitar instanciación directa de clases que solo tienen sentido como concepto base.
🧭 Comparativa: Clase Abstracta vs Interfaz
| Característica | Clase Abstracta | Interfaz |
|---|---|---|
| Instanciación directa | ❌ No | ❌ No |
| Métodos con implementación | ✅ Sí | ✅ Desde Java 8 |
| Herencia múltiple | ❌ No | ✅ Sí |
| Uso típico | Plantilla base | Contrato de comportamiento |