Una clase base, también llamada superclase, es un objeto de computadora que actúa como base para una o más clases derivadas. Cualquier lenguaje informático que sea capaz de heredarse puede crear una clase base. Dependiendo de su tipo preciso, las clases base pueden o no ser capaces de inicializarse, asignando un valor inicial a un objeto, por sí mismas, pero siempre dan algún tipo de funcionalidad común a cualquier clase que herede de ellas. Nunca hay un límite al número de clases derivadas, o subclases, que pueden tener las clases base, pero puede haber un límite, dependiendo del lenguaje de la computadora, al número de clases base que puede tener una clase derivada. Se dice que los lenguajes que permiten que una clase derivada tenga solo una base imponen herencia única, mientras que aquellos que permiten que una clase derivada tenga varias clases base utilizan herencia múltiple.
Las clases base de hormigón se pueden inicializar solas; es decir, se puede crear un objeto del tipo de clase base. Si una clase Example es una base para una clase derivada Example2, se pueden crear un objeto de tipo Example2 y un objeto de tipo Example. Un objeto de tipo Example solo se puede crear llamando explícitamente a ese tipo de objeto; la creación de un objeto de tipo Example2 no convierte a un objeto secundario de tipo Example. En cada caso, el tipo de objeto que se crea crea una instancia de sí mismo únicamente.
Las clases base abstractas, por el contrario, no se pueden inicializar por sí mismas, lo que significa que un objeto de la clase base no se puede crear por sí mismo. Si una clase Example3 es una base abstracta para una clase derivada Example4, solo se puede crear un objeto de tipo Example4. Aunque el tipo Example4 incluye datos del tipo Example3, intentar hacer un objeto únicamente del tipo Example3 resultará en un error. Esta funcionalidad puede ser útil en ocasiones, especialmente si la clase Example3 contiene datos privados que deberían estar estrictamente regulados.
Dependiendo del idioma en el que aparezca, una clase base puede tener comportamientos ligeramente diferentes y nombres marcadamente diferentes. En Java®, las clases base siempre se denominan con ese nombre, mientras que en C ++, dependiendo de su estructura, pueden denominarse clases virtuales. Las diferencias en el nombre y la funcionalidad, si bien son significativas en términos de los lenguajes de computadora que se utilizan, no implican diferencias importantes en el principio detrás de las clases. Una clase base siempre se usa para encapsular funciones y datos comunes para sus clases derivadas, independientemente del idioma.