Выбрать главу

Console.WriteLine("Присвоено значение полю name.");

}

// Метод класса для отображения "имени":

public void ShowName(){

// Отображаем сообщение со значением

// поля name:

Console.WriteLine("Значение поля name: "+name);

}

}

Наш класс называется MyClass. У класса одно поле и два метода. Поле называ-

ется name, и это поле текстовое — оно объявляется как переменная типа string.

Что касается методов, то оба они не возвращают результат. Поэтому в каче-

стве идентификатора типа результата использовано ключевое слово void.

У метода SetName() один текстовый аргумент (объявлен как string arg).

В теле метода командой name=arg полю name присваивается значение, как у ар-

гумента arg. Затем командой Console.WriteLine("Присвоено значение полю

name.") в консоль выводится сообщение с информацией о том, что значе-

ние поля name изменено.

У метода ShowName() аргументов нет. Единственной командой Console.

Write Line("Значение поля name: "+name) в теле метода отображается кон-

сольное сообщение с информацией о значении поля name.

56

Глава 2. Классы и объекты

ПРИМЕЧАНИЕ В методах почти массово используется обращение к полю name. Ре-

зонным образом возникает вопрос, о поле name какого объекта идет

речь? Ведь у каждого объекта класса есть поле name. Поэтому сколько

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

Но проблемы здесь на самом деле нет — обращение выполняется

к полю того объекта, из которого вызывается метод.

На этом описание класса заканчивается, и остается лишь проверить, какая

от этого класса может быть польза. Нам предстоит несколько расширить

программный код. Он будет содержать не только описание класса, но и ин-

струкции по созданию объектов на основе этого класса.

Объектные переменные

и создание объектов

Очень убедительно. Мы подумаем,

к кому это применить.

Из к/ф «31 июня»

Нам предстоит еще одно усилие на пути изучения классов — мы будем

создавать объекты. В C# процедура создания объекта (в широком смысле

этого понятия) имеет некоторые особенности, если сравнивать, например, с созданием обычной переменной (не объекта). Условно процесс создания

объекта можно разбить на два этапа:

 создание объектной переменной;

 создание объекта с присваиванием значения объектной переменной.

Строго  говоря,  при  создании  объекта  указывается  не  имя  класса, а конструктор класса. Конструктор класса — это такой специальный

метод. Одна из его особенностей состоит в том, что имя конструктора

совпадает с именем метода. Даже если мы конструктор в классе не

описывали, он все равно существует — это так называемый конструк-

тор по умолчанию. У такого конструктора нет аргументов — отсюда

и пустые круглые скобки после имени класса в инструкции создания

объекта. Мы расставим все точки над i в вопросе создания объектов

после  того,  как  поближе  познакомимся  с  конструкторами,  интер-

фейсами и наследованием. Другими словами, вопрос этот не такой

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

Объектная переменная создается абсолютно так же, как и «необъектная»

переменная, с той лишь разницей, что в качестве идентификатора типа

Объектные переменные и создание объектов           57

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

Например, чтобы создать объектную переменную с именем obj для класса

MyClass, можем воспользоваться командой MyClass obj. Однако объектная

переменная — это еще не объект (хотя именно с помощью объектной пере-

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

операции). Для создания непосредственно объекта используем оператор

new. Чтобы было понятно, какого класса объект создается, после оператора

new указывается имя класса с пустыми круглыми скобками.

Например, для создания объекта класса MyClass можно воспользоваться

инструкцией new MyClass(). Использование такой инструкции имеет два

важных следствия:

 во-первых, создается объект класса MyClass;

 во-вторых, в качестве результата возвращается адрес этого объекта, или

ссылка на объект.

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

(ссылки на объект) записывают в объектные переменные (обычно класс

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