Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Ответы по Технологии программирования / Данные класса_ поля и константы

.docx
Скачиваний:
8
Добавлен:
21.05.2015
Размер:
8.45 Кб
Скачать

Данные, содержащиеся в классе, могут быть переменными или константами. Переменные, описанные в классе, называются полями класса.

При описании элементов класса можно также указывать атрибуты и специфика­торы, задающие различные характеристики элементов. Синтаксис описания эле­мента данных приведен ниже:

[ атрибуты ] [ спецификаторы ] [ const ] тип имя [ = начальное_значение ]

Возможные специфика­торы полей и констант перечислены в табл. 1.2. Для констант можно использо­вать только спецификаторы 1-6.

Спецификатор

Описание

1

new

Новое описание поля, скрывающее унаследованный элемент класса

2

public

Доступ к элементу не ограничен

3

protected

Доступ только из данного и производных классов

4

internal

Доступ только из данной сборки

5

protected

internal

Доступ только из данного и производных классов и из производных классовданной сборки

6

private

Доступ только из данного класса

7

static

Одно поле для всех экземпляров класса

8

readonly

Поле доступно только для чтения

9

volatile

Поле может изменяться другим процессом или системой

По умолчанию элементы класса считаются закрытыми (private). Для полей клас­са этот вид доступа является предпочтительным, поскольку ноля определяют внутреннее строение класса, которое должно быть скрыто от пользователя. Все методы класса имеют непосредственный доступ к его закрытым полям.

105

Поля, описанные со спецификатором static, а также константы существуют в един­ственном экземпляре для всех объектов класса, поэтому к ним обращаются не через имя экземпляра, а через имя класса. Если класс содержит только статические эле­менты, экземпляр класса создавать не требуется.

Обращение к полю класса выполняется с помощью операции доступа (точка). Справа от точки задается имя поля, слева — имя экземпляра для обычных нолей или имя класса для статических. В листинге 1.1 приведены пример простого класса Demo и два способа обращения к его полям.

Листинг 1.1. Класс Demo, содержащий поля и константу

using System;

namespace ConsoleApplication1

{

class Demo

{

publicint a = 1; // полеДанных

public const double с= 1.66; // константа

publicstaticstring s = "Demo" ;//статическоеполекласса

doubley; // закрытое поле данных

}

class Class1

{

static void Main()

{

Demox = newDemo();//создание экземпляра класса Demo

Console.WriteLine(x.a );// x.a - обращение к полю класса

Console.WriteLine(Demo.c );//Demo.c - обращение к константе

Console.WriteLine(Demo.s ); //обращение к статическому полю

}

}

}

Поле у вывести на экран аналогичным образом не удастся: оно является закры­тым, то есть недоступно извне (из класса Classl). Поскольку значение этому полю явным образом не присвоено, среда присваивает ему значение ноль.

Все поля сначала автоматически инициализируются нулем соответствующего типа (например, полям типа int присваивается 0, а ссылкам на объекты — значение null).После этого полю присваивается значение, заданное при его явной инициа­лизации. Задание начальных значений для статических полей выполняется при инициализации класса, а обычных — при создании экземпляра.

Поля со спецификатором readonly предназначены только для чтения. Установить значение такого поля можно либо при его описании, либо в конструкторе.