Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
57.08 Кб
Скачать

19. Доступ к компонентам классов в зависимости от атрибутов доступа.

Все члены класса, как и сам класс, имеют свой уровень доступа. Только у членов их может быть уже пять:

- public – доступ к члену возможен из любого места одной сборки, либо из другой сборки, на которую есть ссылка;

- protected – доступ к члену возможен только внутри класса, либо в классе-наследнике (при наследовании);

- internal – доступ к члену возможен только из сборки, в которой он объявлен;

- private – доступ к члену возможен только внутри класса;

- protected internal - доступ к члену возможен из одной сборки, либо из класса-наследника другой сборки.

Члены класса (включая вложенные классы и структуры) можно объявить с любым из пяти типов доступа. Члены структуры нельзя объявлять защищенными, так как структуры не поддерживают наследование.

Как правило, доступность члена никогда не выше доступности содержащего его типа. Однако открытый член внутреннего класса может быть доступен за пределами сборки, если член реализует методы интерфейса или переопределяет виртуальные методы, определенные в открытом базовом классе.

Тип любого элемента, являющегося полем, свойством или событием, должен, по меньшей мере, быть таким же доступным, как и этот элемент. Аналогичным образом тип возвращаемого значения и типы параметров любого члена, который явл. методом, индексатором или делегатом, должны иметь по меньшей мере такой же уровень доступности, как сам элемент. Например, метод M, возвращающий класс C не может быть открытым, если C также не является открытым. Подобным образом, свойство типа A не может быть защищенным, если A объявлен закрытым.

Определенные пользователям операторы также должны быть объявлены как открытые. Дополнительные сведения см. в разделе operator (Справочник по C#).

Деструкторы не могут иметь модификаторов доступности.

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

public class Tricycle

{protected void Pedal() { }private int wheels = 3; protected internal int Wheels{get { return wheels; } }}

20. Введение в наследование. Базовые классы.

Наследование, вместе с инкапсуляцией и полиморфизмом, является одной из трех основных характеристик (или базовых понятий) объектно-ориентированного программирования. Наследование позволяет создавать новые классы, которые повторно используют, расширяют и изменяют поведение, определенное в других классах. Класс, члены которого наследуются, называется базовым классом, а класс, который наследует эти члены, называется производным классом. Производный класс может иметь только один непосредственный базовый класс. Однако наследование является транзитивным. Если ClassC является производным от ClassB, и ClassB является производным от ClassA, ClassC наследует члены, объявленные в ClassB и ClassA.

Доступ к членам базового класса во вложенном классе можно получить даже если эти базовые члены переопределены в суперклассе при помощи ключевого слова base. Например, можно создать производный класс, содержащий метод с той же подписью, что и в базовом классе. Если перед методом поставить ключевое слово new, то это будет означать, что метод является абсолютно новым, принадлежащим производному классу. С помощью ключевого слова base можно по-прежнему создать метод для доступа к исходному методу в базовом классе.