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

Хотя в действительности дело обстоит несколько сложнее, но по сути существуют

два базовых типа членов класса: открытые и закрытые. К открытому члену класса мо-

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

получить методы, определенные только в этом классе. Благодаря использованию за-

крытых членов класса мы и имеем возможность управлять доступом.

Ограничение доступа к членам класса — это фундаментальная часть объектно-

ориентированного программирования, поскольку она предотвращает неверное ис-

пользование объекта. Управление доступом к членам класса достигается за счет использования четырех

спецификаторов доступа: public, private, protected и internal .

Модификатор protected применяется только при включении интерфейсов и описан в главе 9. Модификатор i n t e r n a l применяется в основном при использовании компоновочных

файлов (assembly) Спецификатор public разрешает доступ к соответствующему члену класса со сто-

роны другого кода программы, включая методы, определенные внутри других классов.

Спецификатор p r i v a t e разрешает доступ к соответствующему члену класса только

для методов, определенных внутри того же класса. Таким образом, методы других

классов не могут получить доступ к private-члену не их класса. Члены, которые используются только внутри класса, следует определить как

закрытые.

2. Данные экземпляров, которые должны находиться в пределах заданного диапа-

зона, следует определить как закрытые, а доступ к ним обеспечить через от-

крытые методы, выполняющие проверку вхождения в диапазон.

3. Если изменение члена может вызвать эффект, распространяющийся за преде-

лы самого члена (т.е. действует на другие аспекты объекта), этот член следует

определить как закрытый и обеспечить к нему контролируемый доступ.

4. Члены, при некорректном использовании которых на объект может быть ока-

зано негативное воздействие, следует определить как закрытые, а доступ к ним

обеспечить через открытые методы, предохраняющие эти члены от некоррект-

ного использования.

5. Методы, которые получают или устанавливают значения закрытых данных,

должны быть открытыми.

6. Объявление переменных экземпляров открытыми допустимо, если нет причин

делать их закрытыми.

  1. Конструкторы класса: по умолчанию, с аргументами, копирующие.

Конструктор инициализирует объект при его создании. Он имеет такое же имя,

что и сам класс, а синтаксически подобен методу. Однако в определении конструкто-

ров не указывается тип возвращаемого значения. Формат записи конструктора такой:

доступ имя_класса{) {

// тело конструктора}

Все классы имеют конструкторы независимо от того, определите вы их или нет,

поскольку С# автоматически предоставляет конструктор по умолчанию, который

инициализирует все переменные-члены, имеющие тип значений, нулями, а перемен-

ные-члены ссылочного типа — пи 11-значениями. Но если вы определите собствен-

ный конструктор, конструктор по умолчанию больше не используется.

В предыдущем примере использовался конструктор без параметров. Но чаще при-

ходится иметь дело с конструкторами, которые принимают один или несколько пара-

метров. Параметры вносятся в конструктор точно так же, как в метод: для этого дос-

таточно объявить их внутри круглых скобок после имени конструктора.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]