Объектно-ориентированное программирование -- это способ проектирования и написания кода, когда все важные части программы являются объектами.
Вы можете воспользоваться технологией ООП и запрограммировать объект, а затем создать множетсво таких объектов, обладающих одинаковым набором свойств и одинаковой функциональностью.
https://www.youtube.com/watch?v=QZTn7LQk1eg&list=PL6LDsbZOeyrx462VmH18qS0a9Dw9LwpSu&index=1
Сокрытие деталей реализации.
this._name = function() {
}
внутренний интерфейс функции
Способность одних и тех же объектов/функций вести себя по-разному в зависимости от обстоятельств, но при этом сохраняя один и тот же интерфейс.
Допустим наша функция getUserData имеет один и тот же интерфейс, принимает на вход один и тот же аргумент любого типа, к тому же он делает какие-то разные штуки (проверки), но все равно возвращает одно и тоже значение (возвращает данные в одно и том же формате)
Таким образом мы можем сказать что метод(getUserData) полиморфна
Наследование -- когда мы выносим общую функциональность в общий компонент-родитель, а компоненты-потомки могут пользоваться этой функциональностью и возможно как-то доопределять или переопределяться.