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;
во-вторых, в качестве результата возвращается адрес этого объекта, или
ссылка на объект.
Если есть результат, то его обычно куда-то записывают. Адреса объектов
(ссылки на объект) записывают в объектные переменные (обычно класс
объектной переменной должен совпадать с классом объекта). Собственно, объектная переменная и создается для того, чтобы в нее записать ссылку на