Помощь в написании студенческих работ
Антистрессовый сервис

Поля объектов. 
Программирование. 
Базовый курс с#

РефератПомощь в написанииУзнать стоимостьмоей работы

В определении поля могут присутствовать в допустимых сочетаниях несколько модификаторов, которые в этом случае отделяются друг от друга пробелами. Мы уже использовали поля с модификатором static. Как и для статических полей, для полей объектов могут применяться модификаторы: readonly — только для чтения; volatile — подвержен внешним воздействиям; new — применяется при наследовании (см. гл. 13… Читать ещё >

Поля объектов. Программирование. Базовый курс с# (реферат, курсовая, диплом, контрольная)

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

модификаторы_поляорг

тип_поля объявление_переменных;

Обратите внимание, что обязательными элементами объявления являются тип_тголя и объявление переменных.

Тип_поля определяет тип вводимых этим объявлением переменных.

Объявление_переменных — это либо одно объявление, либо список объявлений, разделенных запятыми. Каждое объявление имеет один из следующих двух форматов:

идентификатор

идентификатор = инициализатор_переменной

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

В определении поля могут присутствовать в допустимых сочетаниях несколько модификаторов, которые в этом случае отделяются друг от друга пробелами. Мы уже использовали поля с модификатором static.

Кроме модификатора static уже рассмотрены модификаторы, определяющие доступность членов класса вне объявления класса (public — открытый, protected — защищенный, private — закрытый, internal — внутренний). Статус закрытого доступа получают все члены класса по умолчанию, когда в объявлении модификатор доступа отсутствует.

Как и для статических полей, для полей объектов могут применяться модификаторы: readonly — только для чтения; volatile — подвержен внешним воздействиям; new — применяется при наследовании (см. гл. 13).

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

// ll_ei.cs — поля объектов и класса using System; class Person {.

public static int year = 2020; // текущий год public int age; // возраст

public string name; 11 имя

>

class Program.

{

static void MainQ.

{

Person who; // ссылка на объект класса

who = new Person (); // объект класса

who.name = «Юджин»; 11 имя who. age = 19; // возраст

Console.WriteLine («MMa: {0}, Год рождения: {1}», who.name, Person. year — who. age);

} }

Результат выполнения программы:

Имя: Юджин, Год рождения: 2001.

Класс Person включает одно статическое поле year (сегодняшний год) и два поля объектов age (возраст) и name (имя). Если в классе нет объявления конструктора, то компилятор C# автоматически создает для этого класса открытый (public) конструктор без параметров. Таким образом, в класс Person добавляется конструктор с заголовком:

public PersonQ.

В методе MainQ класса Program создана ссылка (переменная) с именем who типа Person. В операторе who = new Person (); присваивается ссылка на объект класса Person переменной who. Статическое поле year инициализируется значением 2020, а поля объекта (age и name) принимают значения по умолчанию (0 и «»).

Так как поля класса Person открытые, то ссылка who дает возможность присваивать полям объекта значения и получать их. Результаты выполнения иллюстрируют приведенные пояснения.

Важной особенностью (значение которой в дальнейшем будет показано, например, при создании связных списков, см. параграф 11.5) является возможность объявить в классе поле, имеющее тип ссылки на объекты того же класса. Класс с таким полем приведен в следующей программе:

// ll02.cs — ссылка с типом класса как поле объекта using System; class, А {.

public int a = 2;

public int b = 3;

public A memb; // ссылка на объект класса А

}

class Program.

{

static void Main ().

{

A one = new A ();

one.a = 12;

one.b = one. a / one. b;

Console.WriteLine («one.a={0}», one. a);

Console.WriteLine («one.b={0}», one. b);

A two = new A ();

two.memb = one;

Console.WriteLine («two.memb.a={0}», two.memb.a);

Console.WriteLine («two.memb.b={0}», two.memb.b);

>

}

Результат выполнения программы:

one.a=12 one. b=4 two.memb.a=12 two.memb.b=4.

В классе, А декларировано и по умолчанию инициализировано значением null поле memb — ссылка типа А. В методе Main () определены две ссылки (переменные one и two) на объекты класса, А и ассоциированные с ними объекты. Полям one. а и опе. Ь явно присвоены значения. Полю two. memb присвоено значение ссылки one и тем самым поле two. memb «настроено» на объект, адресуемый ссылкой one. Квалифицированные имена two.memb.а и two.memb.b позволяют получить доступ к полям one. а и опе.Ь. Это подтверждают результаты выполнения программы.

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

// ll03.cs — статическое поле с типом класса using System; class, А {.

public int a = 2;

public int b = 3;

static public A smemb; 11 ссылка на объект класса А

У

class Program.

{

static void Main ().

{

A two = new A ();

A.smemb = two;

Console.WriteLine («A.smemb.a={0}», A.smemb.a);

Console.WriteLine («A.smemb.b={0}», A.smemb.b);

>

}

Результат выполнения программы:

A.smemb.a=2 A.smemb.b=3.

Программа очень похожа на предыдущую — отличие заключается в том, что поле smemb статическое, поэтому для обращений используются квалифицированные имена с префиксом «А.» .

Показать весь текст
Заполнить форму текущей работой