Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

1.Классы в С#: данные класса: поля и константы, спецификаторы доступа.




1. Классы в С#: данные класса: поля и константы, спецификаторы доступа.

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

Описание класса содержит ключевое слово class, за которым следует его имя, а далее в фигурных скобках - тело класса. Кроме того, для класса можно задать его базовые классы (предки) и ряд необязательных атрибутов и спецификаторов, определяющих различные характеристики класса:

[ атрибуты ] [ спецификаторы ] class имя_класса [: предки ]

{тело_класса}

Спецификаторы определяют свойства класса, а также доступность класса для других элементов программы.

Спецификаторы public, protected, private называются спецификаторами доступа. Они определяют, откуда можно непосредственно обращаться к данному классу.

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

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

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

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

 

2. Классы в С#: методы класса, конструкторы и деструкторы.

Методы находятся в памяти в единственном экземпляре и используются всеми объектами одного класса совместно, поэтому необходимо обеспечить работу методов нестатических экземпляров с полями именно того объекта, для которого они были вызваны. Для этого в любой нестатический метод автоматически передается скрытый параметр this, в котором хранится ссылка на вызвавший функцию экземпляр.

public Circle T() //метод возвращает ссылку на экземпляр класса

 { return this; }

Конструктор предназначен для инициализации объекта. Конструкторы делятся на конструкторы класса (для статических классов) и конструкторы экземпляра класса (всех остальных классов).

Конструктор экземпляра вызывается автоматически при создании объекта класса с помощью операции new. Имя конструктора совпадает с именем класса.

основные свойства конструкторов:

1. Конструктор не возвращает значение

2. Класс может иметь несколько конструкторов с разными параметрами.

3. Если программист не указал ни одного конструктора или какие-то поля не были инициализированы, полям значимых типов присваивается нуль, полям ссылочных типов - значение null.

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

public Circle(int x, int y, int r)//конструктор

  { this. x = x; this. y = y; radius = r; }

Часто бывает удобно задать в классе несколько конструкторов, чтобы обеспечить возможность инициализации объектов разными способами. Для этого конструкторы должны иметь разные сигнатуры.

private Demo(){} //закрытый конструктор

static Demo()  //статический конструктор

{ a=10; b=2; }

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

Синтаксис деструктора:

[атрибуты] [extern] ~имя_класса()

{тело_деструктора}

Деструктор не имеет параметров, не возвращает значения и не требует указания спецификаторов доступа. Его имя совпадает с именем класса и предваряется тильдой (~), символизирующей обратные по отношению к конструктору действия. Тело деструктора представляет собой блок или просто точку с запятой.

~DemoArray()//деструктор

{ }

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

 

3. Классы в C#: свойства класса, индексаторы.

Свойства

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

Синтаксис свойства:

[атрибуты] [спецификаторы] тип имя_свойства

{ [get код_доступа]

[set код_доступа]}

Чаще всего свойства объявляются как открытые (со спецификатором public).

Код доступа представляет собой блоки операторов, которые выполняются при получении (get) или установке (set) свойства. Может отсутствовать либо часть get, либо set, но не обе одновременно. Если отсутствует часть set, то свойство доступно только для чтения. Если отсутствует часть get, то свойство доступно только для записи.

public int X //свойство для обращения к полю x

{ get { return x; } 

set {x = value; }}

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...