Наследование позволяет повторно использовать существующие исходные тексты программ, подправлять их и перекомпилировать. Эта способность готового к компиляции исходного текста названа расширяемостью.
Наследование >
Новый класс
shape.h + circle.h = circle.h
shape.obj circle.c circle.obj
Для дополнения класса shape (фигура) классом circle (круг),
достаточно лишь объявления его в классе shape (без изменения функций
элементов класса) в модуле shape.h и скомпилировать исходный текст в
shape.obj. Таким образом нет необходимости изменять исходный текст
shape.c.
Успешное создание потомков позволяет увеличивать программу за
счет накопления уже готовых текстов программ. Так, круг наследуют все
свойства фигуры, а цилиндры наследуют все свойства круга и фигуры.
Цилиндр: cylinder() ht area() vol()
Круг: circle() radius area()
Фигура: shape() xo yo area()
Возможно вы заметили по картинке, что класс цилиндр имеет три
функции area(). Действительно, унаследована одна функция area() у окружности, и одна у фигуры. Заимствование этих двух функций, для цилиндра оставляет возможность доступа к ним.
Примечание: порожденный класс может только наращивать базовый класс,
но не способен удалять какие-либо элементы.
Программист, без исходного текста программы, располагая лишь
описанием интерфейса с некоторым классом, может определить новый
класс, наследующий все свойства базового. После этого он может выборочно переопределить поведение некоторых функций элементов базового
класса так, как ему нужно.