Главная » C# » Что такое наследование в Visual C# (Sharp)?

0

Механизм наследования похож на генеалогическое дерево в том, что мы имеем древовидную структуру с родителем и его наследниками. Подобно генеалогичкому дереву, данная структура может содержать несколько уровней. Но механизм наследования не совсем такой, т. к. для каждого узла генеалогического дерева труется пара людей.

Механизм наследования используется классом для получения функциональности базового класса, а сам класс становится подклассом базового класса. В древовиой структуре механизма наследования, особенно в .NET, имеется только один корневой родитель. При  использовании  наследования мы  получаем функционалость, но мы также можем подменять (override) функциональность (рис. 6.1).

Рис. 6.1. Демонстрация двухуровневой структуры наследования на примере автомобилей BMW 530i и BMW 530xi

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

образом. С точки зрения наследования, модель BMW 530i можно считать родитем модели BMW 530xi.

ПРИМЕЧАНИЕ

В данном случае определение, кто родитель, а кто наследник, является моим собсенным мнением, с которым  некоторые  люди  могут  не  согласиться.  Такое  расхождие  во  мнениях является  и  частью объектно-ориентированного  процесса  разработки.

Будучи заднеприводной, что означает более легкую разработку, она бы была разротана первой. А полноприводная модель разрабатывалась бы на базе этой первой модели  и была бы  лишь  ее  модификацией,  а  не  полностью  новым  автомобилем. В обеих моделях применяются одинаковые шины, двигатель, рулевое колесо, оелка кузова и т. д. Но в модели 530xi применяется полностью другая трансмиссия, что оказывает существенное влияние на то, каким образом данная  модель  ведет себя при вождении.

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

Кроме подмены функциональности, механизм наследия можно использовать для улучшения, или на техническом жаргоне перегрузки (overloading), функциональнти. Продемонстрируем эту концепцию  опять на примере  разных  моделей одной марки автомобиля (рис. 6.2).

Рис. 6.2. Демонстрация расширения функциональности

Все три автомобиля, показанные на рис. 6.2, относятся к линейке 530. С  точки зрения наследования функциональность новой модели BMW 530xi Sports Wagon основана на функциональности модели BMW 530xi. Но здесь имеется одна особеость — функциональность 530xi Sports Wagon требует выработать к ней привыу. Например, в обеих моделях багажник открывается нажатием кнопки, но для каждой модели кнопка находится в разных местах, да и багажник открывается пазному. Можно сказать, что каждая модель предоставляет водителю свои интеейс и поведение.

При использовании механизма наследования для перегрузки функциональности мы добавляем функциональность, которая вызывается таким же образом, но использтся и ведет себя по-другому. При данной форме наследования мы не просто менм поведение, но также меняем взаимодействие с пользователем.

В нашем примере мы используем наследование для  расширения  функциональнти, а не для ее подмены или перегрузки.

Источник: Гросс  К. С# 2008:  Пер. с англ. — СПб.:  БХВ-Петербург, 2009. — 576 е.:  ил. — (Самоучитель)

По теме:

  • Комментарии