La diferencia básica entre herencia y polimorfismo es que la herencia permite que el código ya existente se reutilice nuevamente en un programa, y el polimorfismo proporciona un mecanismo para decidir dinámicamente qué forma de función se invoca.
El término polimorfismo simplemente significa «una función, múltiples formas». El polimorfismo se logra tanto en tiempo de compilación como en tiempo de ejecución. El polimorfismo en tiempo de compilación se logra mediante la «sobrecarga», mientras que el polimorfismo en tiempo de ejecución se logra mediante la «anulación».
La herencia es una de las características cruciales de OOP, que respalda firmemente la «reutilización». La reutilización podría describirse como la creación de una nueva clase reutilizando las propiedades de la clase existente. En herencia, hay una clase base, que es heredada por la clase derivada. Cuando una clase hereda cualquier otra clase, los miembros de la clase base se convierten en los miembros de una clase derivada.
La herencia es crear una clase que deriva su característica de una clase ya existente. Por otro lado, el polimorfismo es una interfaz que se puede definir en múltiples formas.
La herencia se implementa en las clases mientras que el polimorfismo se implementa en los métodos / funciones.
Como la herencia permite que una clase derivada use los elementos y métodos definidos en la clase base, la clase derivada no necesita definir esos elementos o método nuevamente, por lo que podemos decir que aumenta la reutilización del código y, por lo tanto, reduce la longitud del código . Por otro lado, el polimorfismo hace posible que un objeto decida qué forma del método quiere invocar tanto en tiempo de compilación como en tiempo de ejecución.
La herencia se puede clasificar como herencia única, herencia múltiple, herencia multinivel, herencia jerárquica y herencia híbrida. Por otro lado, el polimorfismo se clasifica como sobrecarga y anulación.
La herencia y el polimorfismo son conceptos interrelacionados, ya que el polimorfismo dinámico se aplica a las clases que también implementan el concepto de herencia.