Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSBasicCourse2ndedPodbelsky / CSBasicCourse2ndedPodbelsky.rtf
Скачиваний:
27
Добавлен:
22.03.2016
Размер:
11.9 Mб
Скачать

12.2. Свойства классов

Кроме традиционного для объектно-ориентированных языков применения

специальных методов, обеспечивающих обращение к закрытым полям, язык C#

позволяет получить к ним доступ с помощью механизма свойств. Однако, свойство

это не просто средство доступа к полям класса или его объекта. У свойств более

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

признаки вторичные по отношению к значениям их полей. Например для объектов

приведенного выше класса Person с полями фамилия и год_рождения разумно

ввести такой показатель, как возраст в текущий момент времени. Делать такой

показатель полем объекта неудобно – значение показателя должно зависеть не

только от времени создания объекта, но и от момента обращения к этому объекту.

Для класса чисел в научной нотации вторичными характеристиками каждого

объекта

можно

сделать,

например,

его

значение

в

естественной

форме

вещественного числа или значение 10p, где р – порядок числа в научной нотации,

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

сделать длины трёх сторон треугольника, то такие характеристики как периметр

или площадь можно объявить свойствами объектов класса.

Свойство

"свойство"

– это член класса, который обеспечивает доступ к

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

свойства синтаксически не отличаются от полей класса. Однако, между свойствами

и

полями

имеется

принципиальное

различие

в

объекте

отсутствует

ассоциированный со свойством участок памяти. Такой участок памяти выделяется

для каждого поля класса, а свойство, связанное с этим полем, представляет собой

упрощённое по сравнению с методами средство для получения либо задания

значения поля.

Для обращения к свойствам применяются их имена. Эти имена можно

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

и

применения свойств, рассмотрим правила их объявления в классе.

Декларация свойства "декларация свойства" состоит из двух частей. Первая

часть подобна объявлению поля. Вторая часть представляет собой конструкцию

особого вида, включающую пару особых методов с фиксированными именами: get и

set. Эти специфические методы называют аксессорами "аксессор" . Общую форму

объявления свойства "свойство: объявления свойства" можно представить так:

модификаторы_свойстваopt

тип_свойства имя_свойства

{

декларация get-аксессора opt

декларация set-аксессора opt

}

В качестве модификаторов свойства используются: new, public, protected,

Internal, private, static, virtual, sealed, override, abstract, extern

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

несколько модификаторов, которые в этом случае отделяются друг от друга

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

класса, мы уже рассмотрели в связи с полями и методами классов. Модификатор

static позволяет отнести свойство к классу в целом, а не к его объектам. Остальные

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

Тип_свойства

"свойство: тип_свойства"

это тип той характеристики,

которую представляет свойство.

Имя_свойства

"свойство: имя_свойства"

– идентификатор, выбираемый

программистом для именования свойства.

Вторая часть объявления свойства (можно назвать её телом "свойство: тело

свойства"

объявления свойства) – это заключенная в фигурные скобки пара

объявлений "методов" – аксессоров со специальными именами get и set.

Формат декларации аксессора доступа "декларация аксессора доступа" (get-

аксессора)

:

модификаторы_аксессораopt

get тело_аксессора

Формат

декларации

аксессора

изменения

"декларация

аксессора

изменения" (set -аксессора):

модификаторы_аксессораopt

set тело_аксессора

Модификаторы аксессоров: protected, internal, private, protected internal,

Соседние файлы в папке CSBasicCourse2ndedPodbelsky