
- •Лекции по курсу "Технология программирования" (1-й семестр) Оглавление
- •Технология .Net Предыдущее состояние дел.
- •Главные компоненты платформы .Net (clr, cts и cls)
- •Общеязыковая среда выполнения (clr)
- •О бщая система типов и общеязыковые спецификации (cts и cls)
- •Библиотека базовых классов
- •Роль языка с#
- •Компоновочные блоки
- •Роль метаданных типов .Net
- •Роль манифеста компоновочного блока
- •Общая система типов.
- •Объектно-ориентированное программирование
- •Главные элементы объектно-ориентированного подхода
- •Дополнительные элементы ооп
- •Принципы объектно-ориентированного программирования.
- •Классы Инкапсуляция
- •Объект (экземпляр класса).
- •Ключевое слово this
- •Отношения между объектами.
- •Основные отличительные особенности класса
- •Спецификаторы доступа
- •Состав класса
- •Поля класса
- •Доступ к полям
- •Статические и экземплярные переменные
- •Методы (функции-члены класса)
- •Переменное число параметров метода
- •Статические методы
- •Конструкторы
- •Закрытые конструкторы или классы без экземпляров
- •Статические конструкторы.
- •Деструкторы
- •Абстрактные методы и классы.
- •Свойства
- •Индексаторы
- •Статические классы
- •Частичные классы
- •Рекомендации по программированию
- •Наследование Понятие наследования в программировании
- •Типы наследования
- •Наследование реализации
- •Определение наследующих классов
- •Уровень доступа protected и internal
- •Ссылка на объект базового класса
- •Протоклассы
- •Предотвращение наследования с помощью ключевого слова sealed.
- •Отношения между классами
- •Абстрактные классы.
- •Класс object
- •Функциональные замыкания
- •Разработка функциональных замыканий с помощью наследования
- •Разработка функциональных замыканий с помощью экземпляров класса
- •Заключение.
- •Полиморфизм
- •Полиморфизм наследующих классов.
- •Переопределение методов родительского класса. Раннее связывание.
- •Виртуальные методы и их переопределение.
- •Как вызывают виртуальные методы
- •Виртуальные функции и принцип полиморфизма
- •Перегрузка.
- •Перегруженные конструкторы
- •Рекомендации программисту.
Спецификаторы доступа
Спецификаторы (модификаторы доступа) определяют область видимости данного класса. Возможные значения спецификаторов перечислены в следующей таблице:
№ |
Спецификатор |
Описание |
|
private |
Доступ только из элементов класса, внутри которых описан данный класс. |
|
protected |
Доступ только из данного или производного класса. |
|
public |
Доступ к классу не ограничен |
|
internal |
Доступ только из данной программы (сборки). |
|
protected internal |
Доступ только из данного и производного класса и из данной программы (сборки). |
|
abstract |
Абстрактный класс. Применяется в иерархии объектов. |
|
static |
Статический класс. Позволяет обращатся к методам класса без создания экземпляра класса |
|
new |
Задает новое описание класса взамен унаследованного от предка. Используется для вложения классов (в иерархии объектов). |
|
sealed |
Бесплодный класс. Запрещает наследование данного класса. Применяется в иерархии объектов. |
Спецификаторы 1-5 называются спецификаторами доступа. Они определяют, откуда можно непосредственно обращаться к данному классу. Спецификаторы доступа могут комбинироваться с остальными спецификаторами.
Класс можно описывать непосредственно внутри пространства имен или внутри другого класса. В последнем случае класс называется вложенным. В зависимости от места описания класса некоторые из этих спецификаторов могут быть запрещены. В данном случае будем рассмотривать классы, которые описываются непосредственно в пространстве имен. Для таких классов допускаются только два спецификатора: public и internal. По умолчанию, то есть если ни один спецификатор доступа не указан, подразумевается спецификатор internal.
Объекты (или экземпляры) соответствующего класса можно создавать явным или неявным образом, то есть либо программистом, либо системой. Программист создает экземпляр класса с помощью операции new, например:
class Demo{…} // Объявление класса Demo
Demo a = new Demo(); // Создание экземпляра класса Demo
Если объем памяти, достаточный для хранения объекта, выделить не удалось, то генерируется исключение OutOfMemoryException.
Для каждого объекта при его создании в памяти выделяется отдельная область, в которой хранятся его данные. В классе могут присутствовать статические элементы, которые существуют в единственном экземпляре для всех объектов класса. Статические данные часто называют данными класса, а остальные — данными экземпляра. Для работы с данными класса используются статические методы класса, для работы с данными экземпляра — методы экземпляра, или просто методы.
По умолчанию применяется модификатор internal.