Цельработы:формирование навыков реализации наследования.
Введение Наследование (inheritance) – это процесс приобретения состояния и пове- дения одного класса (называемого базовым или предком) другим классом (называемым производным, наследником или потомком). Для любого класса, кроме бесплодного (модификатор sealed), можно задать классы-наследники, в которых повторяется и дополняется состояние и поведение предка.
Синтаксис объявления производного класса (потомка):
[ модификаторы ] classИмя :класс-предок,интерфейсы… { телокласса } Класс в C# может иметь произвольное количество потомков и только один класс-предок. В то же время, класс может наследоваться от произвольного ко- личества интерфейсов. Наследование позволяет многократно использовать про- граммный код, исключать из программы повторяющиеся фрагменты; упрощает модификацию программ и создание новых классов на основе существующих. Благодаря наследованию можно, например, использовать объекты, исходный код которых недоступен, но в поведение которых требуется внести изменения.
Наследование позволяет строить иерархии объектов. Они представляется в виде деревьев, в которых более общие объекты (предки) располагаются ближе к корню, а более специализированные (потомки) – на ветвях и листьях (рис. 2.6).
Рис. 2.6. Иерархии классов в окне Схема классов
Фрагменты программного кода для этих иерархий:
class Computer{ ... } // базовый класс class Animal{ ... } class Notebook:Computer // потомки class Cat:Animal { ... } { ... } class Netbook:Notebook class Dog:Animal { ... } { ... } Возможны различные стратегии классического наследования:
функционал потомка остается неизменным;
функционал методов базового класса скрывается и замещается в произ- водном класса (модификатор new);
функционал методов базового класса, называемых виртуальными (моди-
фикатор virtual), переопределяется в производном классе (модификатор override).
Отметим важные особенности классического наследования:
Наследуются поля, методы и свойства класса.
Конструкторы не наследуются! Класс – потомок должен иметь собствен- ные конструкторы.
Объекту базового класса можно присвоить объект производного, например: public class Notebook:Computer { … }