Dziedziczenie, polimorfizm i enkapsulacja to trzy najbardziej wyraźne, ważne cechy OOP, a od nich dziedziczenie ma obecnie wysoką statystykę użytkowania. Uczę się JavaScript, a tutaj wszyscy mówią, że ma on dziedzictwo prototypowe, a ludzie na całym świecie mówią, że jest to coś zupełnie innego niż klasyczne dziedzictwo.
Nie rozumiem jednak, jaka jest ich różnica z praktycznego punktu widzenia? Innymi słowy, kiedy zdefiniujesz klasę bazową (prototyp), a następnie wyprowadzisz z niej niektóre podklasy, oboje masz dostęp do funkcjonalności swojej klasy bazowej i możesz rozszerzyć funkcje na klasy pochodne. Jeśli weźmiemy pod uwagę to, co powiedziałem, jako zamierzony wynik dziedziczenia, to dlaczego powinniśmy się przejmować, jeśli używamy wersji prototypowej lub klasycznej?
Aby wyjaśnić siebie bardziej, nie widzę różnicy w zakresie użyteczności i wzorców użytkowania prototypowego i klasycznego dziedziczenia. Powoduje to, że nie jestem zainteresowany dowiedzeniem się, dlaczego się różnią, ponieważ oba skutkują tym samym, OOAD. Czym praktycznie (nie teoretycznie) dziedziczenie prototypowe różni się od dziedziczenia klasycznego?