Основы C#. Урок 11. Конструкторы классов
Для начала кратко обсудим, что такое конструктор вообще. Конструктор -
это функция (метод) класса. Раз эта функция, то описываем мы ее почти
точно так же, как и любую другую функцию класса - пишем параметры в
круглых скобках и т. п. Когда конструктор вызывается? В момент создания
переменной. При этом у класса может быть несколько конструкторов - но
при этом они должны различаться или типом параметров, или их
количеством.
Этот урок будет основан на предыдущем. Откройте проект, созданный на
прошлом уроке. Давайте добавим в наш класс Worker конструктор:
...
class Worker
{
public int age=3;
public string name;
//Конструктор 1
public Worker(int age, string name)
{
this.age=age;
this.name=name;
}
}
...
Обратите внимание на ряд особенностей конструктора. Во-первых,
конструктор называется как класс. Раз наш класс называется Worker,
значит и конструктор должен называться точно также. И во-вторых,
конструктор, в отличие от других методов класса, не возвращает никакого
значения (даже типа void). Если вы знакомы с языком C++, то, несомненно,
это вам все знакомо.
Что делает наш конструктор? Он записывает передаваемые в него
параметры во внутренние переменные класса. Обратите внимание, что
называются они одинаково - age и age, name и name. Компилятор сначала
ищет локальную переменную с таким именем, и, если не находит, то
переменную класса. Поэтому age (и name) - это передаваемый в конструктор
параметр. Если же нам надо сослаться на переменную класса (при
существавании переменной с таким же именем, как и передаваемый в функцию
параметр), то мы используем ключевое слово this. Оно всегда указывает
на текущий экземпляр нашего класса. Таким образом в строчках
...
this.age=age;
this.name=name;
...
мы передаем параметры конструктора в переменые класса.
Теперь изменим тестовый класс test следующим образом:
...
static void Main(string[] args)
{
//Вызываем конструктор
Worker wrk1 = new Worker(40, "Вася");
Console.WriteLine(wrk1.name+", "+wrk1.age);
}
...
Теперь после объявления переменной мы вызываем конструктор с двумя
параметрами, который запишет в переменные age и name экземпляра класса
Worker значания 40 и "Вася". Строчкой ниже эти значения выводятся на
экран.
|