La herencia es uno de los mecanismos más útiles de la programación orientada al objeto, ya que por medio de la misma se puede llevar a cabo la reutilización de código. Es decir, puesto que toda clase definida se convierte en candidata para ser usada como base de donde se deriven otras, esto da como resultado que las clases derivadas hereden todos los miembros de la clase base. Por ejemplo, la clase Suma vista en la sección anterior, hereda todos los miembros de la clase Pareja puesto que Suma es una extensión de Pareja. En ese sentido, podemos decir que existen dos tipos de herencia, por extensión y por agregación o composición. En el caso de las clases Pareja y Suma, se dice que Suma es una extensión de Pareja. Vista gráficamente, la herencia por extensión se puede representar así: