Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование / Конспект лекций (C#).pdf
Скачиваний:
864
Добавлен:
27.05.2015
Размер:
2.03 Mб
Скачать

3 Классы. Основные понятия

Класс представляет собой тип, содержащий данные, а также методы, позволяющие оперировать этими данными. Все элементы, входящие в класс будем называть

членами класса.

Для каждого объекта класса создаётся своя копия членов-данных, в то время, как члены-методы являются общими для всех объектов.

3.1 Общая схема

Общая схема определения класса имеет вид:

[<доступ>] class <идентификатор класса> [: <идентификатор классародителя>]

{

<члены класса>

}

где:

<доступ> – спецификатор доступа и/или модификаторы;

<идентификатор класса> – идентификатор создаваемого класса;

<идентификатор класса-родителя> – идентификатор класса, от которого наследует свойства и поведение создаваемый класс;

<члены класса> – поля, методы, свойства и другие структурные единицы класса.

3.2 Спецификаторы доступа

При объявлении класса или члена класса могут указываться ключевые слова, определяющие тип доступа к ним (спецификаторы доступа):

public – доступен без каких-либо ограничений;

protected – доступен внутри тела класса, а также для потомков класса;

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

protected internal – комбинация доступа protected и internal;

private – доступен только внутри тела класса, в котором он объявлен.

По умолчанию (т.е. если нет явного указания), члены класса имеют доступ private, а классы – internal;

Спецификаторы доступа protected и private не могут применяться к классам верхнего уровня, т.е. классам, не входящим в состав других классов.

47

Поля класса объявляются, как правило, с помощью спецификаторов доступа protected и private, т.к. доступ к данным класса извне реализуется с помощью свойств, методов или индексаторов. Использование для доступа к полям спецификатора public снижает надёжность программы1.

3.3 Поля

Поле по своей сути представляет обычную переменную некоторого типа, для которой задан спецификатор доступа. Формальная схема описания полей имеет вид:

[<доступ>] <тип> <идентификатор 1>[=<значение идентификатора 1>][, <идентификатор2>[=<значение идентификатора 2>] ...];

Примеры:

private double d; protected int a, b=10;

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

присвоение полю значения по умолчанию для его типа;

присвоение значения инициализации, заданного при объявлении поля;

присвоение значения, указанного в конструкторе.

3.4 Создание объекта и доступ к его членам

В качестве начального примера работы с классами возьмём класс, описанный следующим образом:

class Figure

{

public

string sType; //

строковое представление типа фигуры

public

int posX, posY; //

координаты фигуры

}

Объявление переменной, которая может ссылаться на экземпляр некоторого класса (объект) выполняется обычным для переменных способом, например:

Figure firstFigure;

Классы являются ссылочным типом, поэтому перед использованием переменных данного типа требуется либо задание ссылки на существующий объект, либо созданием объекта путём использования оператора new совместно с вызовом специального метода – конструктора класса, Простейший конструктор (конструктор по

1 В приводимых в конспекте примерах для уменьшения объёма кода и простоты изложения использование полей со спецификатором доступа public будем считать допустимым.

48