Наследование, полиморфизм и инкапсуляция являются тремя наиболее отличительными и важными особенностями ООП, и в наши дни наследование имеет высокую статистику использования. Я изучаю JavaScript, и здесь все говорят, что он имеет прототипное наследование, и люди повсюду говорят, что это что-то сильно отличающееся от классического наследования.
Однако я не могу понять, в чем их отличие с точки зрения практического использования? Другими словами, когда вы определяете базовый класс (прототип), а затем извлекаете из него некоторые подклассы, вы оба получаете доступ к функциональным возможностям вашего базового класса и можете расширять функции в производных классах. Если мы считаем то, что я сказал, предполагаемым результатом наследования, то почему нас должно волновать, используем ли мы прототип или классическую версию?
Чтобы очистить себя больше, я не вижу различий в полезности и моделях использования прототипа и классического наследования. Это приводит к тому, что мне не интересно узнавать, почему они разные, так как они оба приводят к одному и тому же, OOAD. Чем практически (не теоретически) наследование прототипа отличается от классического наследования?