Наследование - это способность брать существующий - базовый
класс и порождать из него новый класс - потомок, с наследованием всех
его атрибутов и поведения. Это пожалуй самая впечатляющая возможность
объектно-ориентированного программирования и, возможно, единственное
коренное отличие С++ от Си.
Рассмотрим отвлеченный пример из реальной жизни - классификационную схему живых организмов. По этой схеме растительные и живые
царства делятся на группы, так называемые типы. Каждый тип, в свою
очередь, делится на классы, отряды, семейства и далее. Группы более
низкого уровня наследуют характеристики групп более высоких уровней.
Так, из утверждения о том, что волк относится к семейству псовых, вытекает сразу несколько положений. Из него следует, что у волков хорошо развиты слух и обоняние, поскольку таковы характеристики псовых.
Так как псовые входят в отряд хищных, это утверждение говорит еще о
том, что волки питаются мясом. Поскольку хищные относятся к млекопитающим, это утверждение говорит и о том, что волки имеют волосяной
покров и регулируемую температуру тела. Наконец, так как млекопитающие являются позвоночными, мы узнаем и то, что у волков есть позвоночник.
Волк -> Псовые -> Хищники -> Млекопитающие -> Позвоночные
Подобные схемы наследования можно проследить в классификации
языков программирования, классификации типов компьютеров и других.
Рассмотрим существующие в объектно-ориентированных языках иерархии
порождаемых объектов.