Ereditarietà, polimorfismo ed incapsulamento sono le tre caratteristiche più distinte e importanti di OOP, e da esse l'ereditarietà ha oggi statistiche di utilizzo elevato. Sto imparando JavaScript, e qui, tutti dicono che ha un'eredità prototipale, e le persone ovunque dicono che è qualcosa di molto diverso dall'eredità classica.
Tuttavia, non riesco a capire qual è la loro differenza dal punto di vista pratico? In altre parole, quando si definisce una classe base (prototipo) e quindi ne derivano alcune sottoclassi, entrambi si ha accesso alle funzionalità della propria classe base e si possono aumentare le funzioni sulle classi derivate. Se consideriamo quello che ho detto essere il risultato previsto dell'ereditarietà, allora perché dovremmo preoccuparci se stiamo usando la versione prototipo o classica?
Per chiarirmi di più, non vedo alcuna differenza nell'utilità e negli schemi di utilizzo dell'eredità prototipale e classica. Ciò non ha alcun interesse a scoprire perché sono diversi, poiché entrambi danno come risultato la stessa cosa, OOAD. In che modo l'eredità prototipale praticamente (non teoricamente) è diversa dall'eredità classica?