ПРИМЕЧАНИЕ Это не всегда так. Есть классы, которые представляют интерес сами

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

методами, которые играют роль библиотеки.

В этой главе мы расширим свои познания в области создания классов.

Классы могут быть самыми разными, но нас пока интересуют наиболее

простые варианты. В ближайшем будущем мы будем использовать следую-

щий шаблон для создания классов:

class имя_класса{

public тип_поля имя_поля;

public тип_результата имя_метода(аргументы){

// код метода

}

}

ПРИМЕЧАНИЕ Члены класса (в данном случае поля и методы) могут быть закрытыми

и открытыми. Закрытые члены класса — это члены, которые класс

приберегает «для себя», то есть для использования исключительно

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

только внутри класса, но и вне его. Именно такие члены класса пока

что нас и будут интересовать.

Блок с кодом класса начинается ключевым словом class, после которого

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

Собственно класс — то, что находится в фигурных скобках. А в скобках

может находиться описание полей и методов (и некоторых членов класса).

Поля описываются как обычные переменные: указывается тип переменной

и ее имя. Описание метода выполняется по такому шаблону:

 идентификатор типа результата — ключевое слово, которое определяет

тип значения, возвращаемого методом в качестве результата;

 имя метода;

Описание класса           55

 в круглых скобках указывается список аргументов. Аргументы пере-

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

аргументов нет, скобки все равно есть — пустые;

 программный код метода (тело метода) заключается в фигурные скобки.

И поля, и методы описываются с ключевым словом public, что означает их

доступность за пределами класса.

В качестве иллюстрации рассмотрим программный код с описанием клас-

са, представленный в листинге 2.1.

Листинг 2.1.  Класс с полем и двумя методами

class MyClass{

// Поле класса:

public string name;

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

public void SetName(string arg){

// Присваиваем значение полю name:

name=arg;

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

// значения поля name:

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# процедура создания объекта (в широком смысле

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

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

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

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

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

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

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

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

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

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

Перейти на страницу:

Похожие книги