7. Конструкторы


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

Основные характеристики конструкторов

  • Имя конструктора всегда совпадает с именем класса
  • Конструктор не имеет возвращаемого типа (даже void)
  • Конструктор вызывается автоматически при создании объекта с помощью оператора new
  • В классе может быть несколько конструкторов (перегрузка конструкторов)

Виды конструкторов

1. Конструктор по умолчанию

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

public class Person
{
    public string Name;
    public int Age;
    
    // Конструктор по умолчанию (можно не писать явно)
    public Person()
    {
    }
}

// Использование
Person person = new Person();

2. Параметризованный конструктор

Конструктор с параметрами позволяет инициализировать объект значениями при создании:

public class Person
{
    public string Name;
    public int Age;
    
    public Person(string name, int age)
    {
        Name = name;
        Age = age;
    }
}

// Использование
Person person = new Person("Иван", 25);

3. Перегруженный конструктор

Класс может иметь несколько конструкторов с разными параметрами:

public class Person
{
    public string Name;
    public int Age;
    
    // Конструктор без параметров
    public Person()
    {
        Name = "Неизвестно";
        Age = 0;
    }
    
    // Конструктор с одним параметром
    public Person(string name)
    {
        Name = name;
        Age = 0;
    }
    
    // Конструктор с двумя параметрами
    public Person(string name, int age)
    {
        Name = name;
        Age = age;
    }
}

4. Вызов одного конструктора из другого (this)

Можно вызвать один конструктор из другого с помощью ключевого слова this:

public class Person
{
    public string Name;
    public int Age;
    
    public Person() : this("Неизвестно", 0)
    {
    }
    
    public Person(string name) : this(name, 0)
    {
    }
    
    public Person(string name, int age)
    {
        Name = name;
        Age = age;
    }
}

5. Статический конструктор

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

public class Settings
{
    public static string AppName;
    
    static Settings()
    {
        AppName = "Моё приложение";
    }
}

6. Приватный конструктор (Private Constructor)

Делает класс недоступным для создания экземпляров извне (например, для singleton-паттерна или утилитарных классов).

public class Singleton
{
    private Singleton() { } // Приватный конструктор

    public static Singleton Instance { get; } = new Singleton();
}

time 1000 ms
memory 256 Mb

Комментарий учителя