Реальные примеры почти всегда ошибаются, потому что они приводят примеры, где всегда есть вероятность того, что что-то есть TypeA
и то, и другое, TypeB
но иерархия единого наследования во многих языках не позволяет этого.
Чем больше я программирую, тем больше ухожу от наследства.
Даже слово «наследовать» здесь используется неправильно. Например, вы наследуете около 50% черт вашего отца и 50% черт вашей матери. На самом деле ваша ДНК - это составная часть половины ДНК вашего отца и половины ДНК вашей матери. Это потому, что биология на самом деле предпочитает композицию наследованию , и вы тоже должны.
Простая реализация интерфейсов, или, что еще лучше, «типизирование утки», плюс внедрение зависимостей, - гораздо лучшая вещь для обучения людей, плохо знакомых с объектно-ориентированным программированием.