144
Часть II. Объектно-ориентированное программирование
Итак, в этой
программе создается класс
MyCar
с тремя приватными по-
лями (имя автомобиля, скорость и имя владельца).
private string name;
private int speed;
private string owner_name;
Так как все поля приватные, то из внешней программы, в
частности из
Main()
, к ним доступа нет. Но есть доступ через
метод
M1()
, который
имеет атрибут
public
(общедоступный). То есть в данном случае, если
мы хотим что-то с полями делать, то имеем только одно средство, кото-
рое в классе определено. Это метод
M1()
. Другого не дано. В классе оп-
ределены два конструктора, которые позволяют создать два разных
объекта. Один — на основании инициализации трех полей, другой —
двух полей. Конструкторы должны быть общедоступными, чтобы вне
класса с их помощью создавать объекты.
Поэтому у конструкторов име-
ется атрибут
public
. Единственный метод класса (
M1()
) увеличивает
скорость автомобиля в два раза. В основной программе
Main()
создают-
ся два объекта двумя конструкторами, и в каждом случае выполняется
метод
М1()
.
Чтобы было видно, что же получается при вычислениях,
программа была запущена в режиме отладки. Точки останова были по-
ставлены так, чтобы можно было пошагово следить, как формируется
объект
car
разными конструкторами. Значения, получаемые
полями
объектов в результате их инициализации конструкторами и воздействия
на них метода
М1()
, показаны на рис. 8.1 и 8.2.
Заметим, что для обращения к элементу класса надо назвать класс и
через точку написать имя требуемого элемента. Отметим также, что
после определения полей класса,
которые в объектах, полученных из
этого класса, будут использоваться для представления их состояния,
определяют другие члены, которые моделируют поведение объектов.
В нашем случае — это метод
М1()
. Размещение одной строкой объекта,
как показано в предыдущем листинге (
MyCar car = new MyCar("Лада",
120,"Иванов");
), не обязательно: можно сначала объявить тип перемен-
ной (
MyCar car;
), а потом создать экземпляр класса (объект):
car = new MyCar("Лада",120,"Иванов");
Конструктор класса — это
специальный метод, который вызывается при
создании объекта. Этот метод не имеет, в отличие от других методов,
никакого возвращаемого значения: ни типа
int
, ни типа
double
, и даже
типа
void
не имеет. В C# каждый класс снабжается своим конструкто-
ром
по умолчанию, хотите вы этого или нет. Это метод с именем класса,