JS: Прототипы
Теория: Наследование
В прошлом уроке мы обсудили иерархии типов как идею. Теперь переходим к механике наследования в коде.
Наследование - это способ выразить отношение "частное - общее" и переиспользовать поведение базового типа.

Базовый тип
Начнем с простого узла Node, который хранит имя и умеет его отдавать:
Это общий контракт, который пригодится нескольким видам тегов.
Подтип
Теперь создаем специализированный тип, например PairedTag, который наследуется от Node и добавляет body:
Подтип использует базовое поведение (getName) и добавляет свое (toString).
Что это дает
- меньше дублирования
- общий контракт в одном месте
- специализация там, где реально разные правила поведения
Пример использования:
Важный практический акцент
Наследование не привязано к слову class. В JavaScript классы - это удобная форма записи поверх более базовых механизмов, которые мы разберем дальше.
Поэтому важно понимать не только синтаксис, но и модель:
- откуда берется поведение
- как вызывается "родительская" логика
- как устроено переопределение методов
Итоги
Наследование полезно, когда подтип действительно расширяет базовый контракт.
Если связь искусственная и нужна только ради повторного использования кода, чаще лучше выбрать композицию. Этот критерий сильно снижает количество ошибок в архитектуре.