C# для новичков: Конструкторы и static

Конструкторы классов

Конструкторы – специальные методы, присутствующие в каждом классе (даже если они неявны). Конструктор по умолчанию вызывается при создании объекта класса. Переопределение конструктора позволяет выполнять дополнительные действия при создании объекта: получать характеристики, выводить информацию в консоль или выполнять другие операции. Например, при работе с классом для подключения к базе данных, удобно использовать конструктор, устанавливающий соединение с базой данных при создании объекта. Это реализуется путем написания кода внутри конструктора, выполняющегося автоматически при создании объекта.

Реализация конструкторов в классе Robot

Рассмотрим реализацию конструкторов в классе Robot. Все конструкторы должны иметь модификатор доступа (public, private, protected, internal). Если модификатор доступа закрыт (например, private), создание объектов класса будет невозможно. Поэтому, будем использовать модификатор public.

Конструктор не возвращает значение, поэтому тип данных не указывается. Имя конструктора должно совпадать с именем класса. Простейший конструктор (конструктор по умолчанию) выглядит так:

public Robot() { }

Этот конструктор не принимает параметров и не выполняет никаких действий. Он присутствует в любом классе.

Добавим в конструктор вывод сообщения в консоль:

public Robot() 
{
  Console.WriteLine("Объект был создан");
}

Теперь при создании каждого объекта Robot будет выводиться это сообщение.

Конструкторы с параметрами

Полезнее использовать конструкторы с параметрами. Допустим, наш конструктор принимает имя, вес и координаты робота:

public Robot(string name, double weight, Point coordinates)
{
  SetName(name, weight, coordinates); //Вызов метода установки параметров
}

В этом случае, при создании объекта, нужно передать эти параметры:

Robot bot = new Robot("Bot", 100.5, new Point(10, 20));

Для установки параметров позже можно добавить конструктор без параметров:

public Robot() { }

Теперь можно создавать объекты двумя способами: с указанием параметров в конструкторе или без них, установив параметры позже, например, через методы класса.

Можно создавать несколько конструкторов в одном классе. Они должны отличаться количеством и/или типами параметров. Например:

public Robot(string name) { Name = name; } //Конструктор с одним параметром

Модификатор static

Модификатор static применяется к полям и методам, принадлежащим классу, а не конкретным объектам. Доступ к статическим полям и методам осуществляется через имя класса.

Создадим статическое поле:

public static int Account;

Теперь можно обращаться к этому полю через Robot.Account.

Аналогично, можно создать статический метод:

public static void Print()
{
  Console.WriteLine("Hello there!");
}

К нему можно обратиться как Robot.Print().

Статические поля сохраняют свое значение между созданием объектов и после завершения работы с ними. Это удобно, например, для подсчета количества созданных объектов:

public static int Count = 0;

public Robot()
{
  Count++;
}

public static void PrintCount()
{
  Console.WriteLine($"Создано объектов: {Count}");
}

Теперь при создании каждого объекта Robot переменная Count увеличивается на 1, и можно получить общее количество созданных объектов вызвав метод Robot.PrintCount().

В этом уроке рассмотрены конструкторы классов и модификатор static. Конструкторы позволяют управлять процессом создания объектов, а модификатор static – создавать поля и методы, принадлежащие всему классу, а не отдельным экземплярам. Знание этих концепций существенно расширяет возможности программирования на C#.

Что будем искать? Например,программа