Наследование — это ключевая особенность парадигмы объектно-ориентированного программирования. В результате абстрагирования общие свойства некоторого набора классов включаются в базовый класс более высокого уровня. А в производных классах более узкой специализации, которые "наследуют" поведение базового класса, можно изменять свойства или добавлять новые. Именно наследование делает возможным повторное использование кода и позволяет расширить сферу применения имеющихся классов.
Рассмотрим базовый класс Reservable (Резервируемый объект, ресурс) и производные от него классы, Hotel (Гостиница) и Flight (Рейс). У всех резервируемых объектов есть общие свойства, например, объем. У каждого вида резервируемых объектов есть свои уникальные характеристики. Например, гостиница имеет название и находится в определенном городе, а рейс — начало и пункт назначения. На Рисунок 4.1 проиллюстрированы отношения между разными резервируемыми объектами.