¿Qué es?

es un concepto en el que algunas propiedades y métodos de un Objeto están siendo utilizados por otro Objeto. A diferencia de la mayoría de los lenguajes P.O.O donde las clases heredan las clases, el Objeto JavaScript hereda el Objeto, es decir, ciertas características (propiedades y métodos) de un objeto pueden ser reutilizadas por otros Objetos.

en el ejemplo anterior definimos una clase Libro con cierta propiedad y método y luego heredamos la clase Libro en la clase Reseña y usamos todas las propiedades y métodos de la clase Libro, así como también definimos ciertas propiedades y métodos para el Estudiante .
Nota: La clase libro y reseña tienen el mismo método, es decir,mostrar_info (), a esto se le llama .
Para la herencia hay dos palabras claves


extends: La palabra clave extends es usada en declaraciones de clase o expresiones de clase para crear una clase hija.
super: La palabra clave super es usada para llamar funciones del objeto padre.

Override

Anulación de método . La anulación de métodos permite que el método en una clase secundaria tenga el mismo nombre y firma de método que el de una clase primaria.
En el código anterior, la palabra clave super se usa para referirse a la variable de instancia de clase primaria inmediata





Poliformismo

En programación orientada a objetos se denomina polimorfismo a la capacidad que tienen los objetos de una clase de responder al mismo mensaje o evento en función de los parámetros utilizados durante su invocación, es decir  aquel que tiene varias formas de comportarse o, más específicamente, varias maneras de hacer las cosas.

Los objetos pueden manifestar esta cualidad de dos maneras distintas, una directamente con su comportamiento (sus métodos) y otra usando la relación de herencia.


Que podemos concluir definitivamente la herencia con sus caracteristicas como el polimorfismo característica poderosa de  POO, sobrecargando métodos o creando  jerarquías de herencia y sobrescribiendo métodos, nos ahorraremos mucho tiempo y esfuerzo al escribir nuestros programas, además de que obtendremos un código más limpio y elegante. todo buen programador de este paradigma sabe aprovecharlo. Ya sea , 

Relaciones IS-A y HAS-A

En POO el concepto de IS-A está basado en la herencia de clase o implementación de interfaz. IS-A es una forma de decir que “A es un tipo de B”.

Las relaciones HAS-A están basadas en el uso, en lugar de en la herencia. Esto es, la clase A HAS-A B si el código de la clase A tiene un atributo de INSTANCIA (¡NO de CLASE!) que es una referencia de tipo B.