Herança, polimorfismo e encapsulamento são os três recursos mais distintos e importantes do OOP e, a partir deles, a herança tem uma estatística de alto uso nos dias de hoje. Estou aprendendo JavaScript e, aqui, todos dizem que tem uma herança prototípica, e as pessoas em todos os lugares dizem que é algo muito diferente da herança clássica.
No entanto, não consigo entender qual é a diferença entre eles do ponto de vista prático? Em outras palavras, quando você define uma classe base (protótipo) e extrai algumas subclasses dela, os dois têm acesso às funcionalidades da sua classe base e podem aumentar as funções nas classes derivadas. Se considerarmos o que eu disse ser o resultado pretendido da herança, por que deveríamos nos importar se estamos usando a versão prototípica ou clássica?
Para me esclarecer mais, não vejo diferença nos padrões de utilidade e uso da herança prototípica e clássica. Isso resulta em eu não ter interesse em saber por que eles são diferentes, pois ambos resultam na mesma coisa, OOAD. Quão praticamente (não teoricamente) a herança prototípica é diferente da herança clássica?