En la programación orientada a objetos, una clase abstracta proporciona una clase base que puede usarse para proporcionar a otras clases una implementación e interfaz parciales. Están incompletos por sí mismos y se utilizan en situaciones de herencia en muchos lenguajes de programación como Java, C ++ y C #. Su uso como clase base significa que a menudo se les conoce como clase base abstracta (ABC).
Una parte integral de la programación orientada a objetos, la abstracción de datos elimina los detalles innecesarios de un objeto. Esencialmente, reduce el objeto a sus principales características de identificación. Estas características básicas proporcionan un plano que se puede utilizar para crear otros objetos con las mismas propiedades, solo que difieren en los detalles.
Este plano se define como una clase. Las clases se utilizan para encapsular el código, haciéndolo más fácil para el programador, porque puede hacer referencia a rutinas comunes específicas en lugar de escribir las rutinas una y otra vez. Los programadores crean objetos secundarios a partir de clases, y estos objetos heredan las funciones y métodos dentro de la clase principal.
El propósito de una clase abstracta es ser el marco sobre el cual se construyen otras clases. Los objetos no se pueden crear directamente a partir de una clase abstracta, solo a partir de las subclases que pertenecen a la clase abstracta. Para que un objeto herede de una clase abstracta, se debe crear una subclase. Los objetos de una subclase creada de una clase abstracta heredan propiedades de esa clase abstracta.
Cada clase modela un concepto, y las clases abstractas tienden a modelar conceptos más abstractos usando métodos abstractos. Los métodos abstractos son subrutinas dentro de una clase abstracta que no contienen implementación. Estas subrutinas se utilizan como marcadores de posición para ser sobrescritos por una subclase o un objeto diseñado en función de la clase que contiene el método abstracto en sí.
Existen diferentes métodos para crear una clase abstracta. Por ejemplo, en C ++, una clase abstracta se crea desarrollando una clase con al menos un método abstracto o una función virtual pura. Java usa una palabra clave, «abstracto», para denotar una clase abstracta. Sin embargo, no se definen en lenguajes de programación que no apoyan la idea de herencia.
La herencia es el proceso de crear nuevos objetos a partir de clases donde los nuevos objetos pueden usar las funciones y métodos definidos dentro de sus clases principales sin la necesidad de reformular el programa. Por eso es útil una clase abstracta. Las clases secundarias y los objetos secundarios de esas subclases heredan propiedades de la clase abstracta principal. Las clases abstractas se consideran superclases y están en la parte superior de la jerarquía de estructura de clases, por lo que no tienen sentido en un lenguaje que no admite la herencia.