Скачиваний:
15
Добавлен:
04.09.2023
Размер:
1.17 Mб
Скачать

25 Наследование в c#. Понятие наследования в c#. Механизм наследования. Базовый и производный классы. Наследование и модификаторы доступа.

Наследование – это один из принципов объектно-ориентированного программирования, который дает возможность классу использовать программный код другого (базового) класса, дополняя его своими собственными деталями реализации. Иными словами, при наследовании происходит получение нового (производного) класса, который содержит программный код базового класса с указанием собственных особенностей использования. Наследование принадлежит к типу is-a отношений между классами.

Базовый класс (base class) – это класс, программный код которого используется в унаследованных (производных) классах. Производный класс (derived class) – это класс, который использует программный код базового класса и изменяет (расширяет) его под свои потребности. В свою очередь, класс derived может быть базовым для другого класса нижнего уровня.

// базовый класс

class Base

{

// поля, методы класса

// ...

}

// класс, унаследованный от класса Base

class Derived : Base

{

// поля, методы класса

// ...

}

Язык программирования C# не поддерживает множественного наследования (в отличие от языка C++). Из конкретного класса одновременно может быть унаследована только один класс.

Если элемент класса (поле, метод, свойство и т.п.) реализован с модификатором доступа protected, то к нему выполняются следующие правила:

• элемент доступен в пределах класса, в котором он объявлен, а также в унаследованных классах;

• элемент недоступен из экземпляра класса.

Модификатор доступа protected internal объединяет ограничение модификатора protected и модификатора internal (см. пример ниже). Здесь возможны два случая:

• Ситуация, когда класс с protected internal элементом и создаваемый экземпляр этого класса находятся в одной сборке. В этом случае доступ из экземпляра класса к protected internal элементу есть (расширение ключевого слова internal). Также есть доступ из производного класса (расширение ключевого слова protected).

• Ситуация, когда класс с protected internal элементом объявлен в одной сборке, а экземпляр этого класса создается в другой сборке. В этом случае экземпляр не имеет доступа к protected internal элементу (ограничение internal). Но можно создать производный класс и из этого класса получить доступ к protected internal элементу (расширение protected).