Tipo abstracto

En ingeniería de software, un tipo abstracto es un tipo en un sistema de tipo nominativo que es declarado por el programador, y que tiene la propiedad de no contener miembros que no sean miembros de algún subtipo declarado.

Según el paradigma de programación orientado a objetos, los tipos abstractos se implementan bajo nombres como clases base abstractas, interfaces, rasgos (en inglés, traits), mixins, sabores (en inglés, flavors) o roles.

Las clases abstractas pueden ser creadas, indicadas o simuladas de diversas formas: Los tipos abstractos son una característica importante en lenguajes orientados a objetos tipados estáticamente.

El hecho de que muchos lenguajes no permitan la instanciación de tipos abstractos (y fuercen a los subtipos a implementar todas las funcionalidades necesarias) asegura todavía más la corrección del programa.

Hay varios mecanismos para crear tipos abstractos, que varían según sus capacidades.