¡Esta es una revisión vieja del documento!
Tabla de Contenidos
Herencia: Clases Abstractas
Si queremos que una clase no pueda ser instanciada hemos visto que basta con definir sus constructores como private
, de forma que nunca podrán ser invocados. Esto es lo que ocurre con el constructor de la clase Math
.
Existen otro tipo de clases que no se pueden instanciar ni tampoco acceder a sus métodos: estas son las clases abstractas.
Definición de Clase Abstracta
Una clase abstracta se crea únicamente para ser heredada por otras clases, y no se permite instanciar.
Se usa para unificar propiedades y operaciones de las subclases, pero sin impidiendo crear instancias de la superclase.
Ejemplo: Podemos tener un tipo que representa Vehículos, tienen unas propiedades comunes, y que engloba a muchos subtipos como Coche, Moto, Bicicleta, Barco, Tren, Avión, etc. Tener un elemento de tipo vehículo puede ser demasiado general y no tener mucho sentido propio. Sin embargo, puede definir una serie de operaciones para todos los tipos de vehículos, elementos que sí nos interesaría crear, y tendrían un mayor sentido propio. Todos los vehículos pueden realizar, por ejemplo, las operaciones moverse, acelerar o parar, pero probablemente cada uno lo haga de distinta forma.
Cacacterísticas
- Una clase que tiene un
método abstracto
, es obligatoriamente unaclase abstracta
. - Un
método abstracto
es un método que está declarado, pero no implementado. Solo tiene su nombre, parámetros, retorno y modificadores. - Una clase abtracta puede tener métodos implementados (no abstractos, sino concretos), incluso puede no tener ningún método abstracto.
- Una clase que hereda de una clase abstracta está obligada a implementar todos los métodos abstractos. Si no lo hace, ese método será abstracto, y la clase será también abstracta.
En resumen, una clase abstracta solo se usa para ser heredada, tenga métodos abstractos o no. Un clase que tiene al menos un método abstracto, debe ser definida como abstracta.
Declarar un Método Abstracto
Es un método que nunca va a poder ser ejecutado, ya que no tiene código (implementación). La subclase está obligado a sobrescribirlo si se quiere ser ejecutado. Se define como abstract
:
[modificador] abstract tipoDevuelto nombreMetodo([parametros]); public abstract boolean arrancar(int tipoLlave);
Declarar una Clase Abstracta
Para declarar una clase como abstracta se usa la palabra clase abstract
:
public abstract class Vehiculo{ //atributos //métodos, abstractos y concretos public abstract boolean arrancar(int tipoLlave); public abstract void acelerar(int intensidad); public abstract void frenar(int intensidad); }
Variables de Referencia
Crear una clase abstracta tiene como finalidad acceder polimórficamente a objetos de sus subclases.
Puedo crear una variable del tipo de una clase Abstracta, pero nunca podré crear un objeto de una clase abstracta:
Vehiculo miVehiculo; miVehiculo = new Vehiculo() -> Error: no se puede //Pero la puedo usar para contener objetos de subclases miVehiculo = new Coche(); miVehiculo.arrancar();
El uso de clases abstractas está completamente ligado al concepto y uso del polimorfismo
© 2025 Fernando Valdeón