Реализация принципа наследования в объектно-ориентированных языках программирования. Виды наследования.

Под наследованием понимают возможность объявления производных типов на основе ранее объявленных типов.

Наследование прежде всего является эффективным механизмом повторного использования классов, когда новые классы строятся при необходимости на базе уже существующих, а не с нуля.

Наследование отражает отношения между классами «это есть». Примеры наследования: автомобиль есть транспортное средство, клиент банка есть человек, прямоугольник есть геометрическая фигура. Таким образом, при наследовании базовый и производный классы выступают как, соответственно, обобщение и конкретизация некоторого объекта реального мира. В случае наследования новый класс в буквальном смысле создаётся на основе ранее объявленного класса, наследует, а возможно и модифицирует его данные и функции. Объявленный класс может служить основой (базовым классом) для новых производных классов. Производные классы наследуют данные и функции своих базовых классов и добавляют собственные компоненты.

Перечислим основные отношения сущностей предметной области, которые могут быть реализованы в программной системе с помощью механизма наследования:

Специализация. Дочерний класс является более конкретным, частным или специализированным случаем родительского класса. Другими словами, дочерний класс является подтипом родительского класса.

Спецификация. Родительский класс описывает поведение, которое реализуется в дочернем классе, а в родительском было лишь продекларировано.

Конструирование. Дочерний класс использует методы, предоставляемые родительским классом, но не является подтипом родительского класса (реализация методов нарушает принцип подстановки).

Обобщение. Дочерний класс модифицирует или переопределяет некоторые методы родительского класса с целью получения объекта более общей категории.

Расширение. Дочерний класс добавляет новые функциональные возможности к родительскому классу, но не меняет наследуемое поведение.

Ограничение. Дочерний класс ограничивает использование некоторых методов родительского класса.

Варьирование. Дочерний и родительский классы являются вариациями на одну тему, и связь «класс—подкласс» произвольна.

Комбинирование. Дочерний класс наследует черты более чем одного родительского класса.