Menu
Coddy logo textTech

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

Часть раздела Объектно-ориентированное программирование путешествия по C# на Coddy — урок 7 из 70.

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

Конструктор по умолчанию без параметров

public class Book
{
    public string Title { get; set; }
    public string Author { get; set; }
    
    // Конструктор по умолчанию
    public Book()
    {
        Title = "Unknown";
        Author = "Unknown";
    }
}

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

public class Book
{
    public string Title { get; set; }
    public string Author { get; set; }
    
    // Конструктор с параметрами
    public Book(string title, string author)
    {
        Title = title;
        Author = author;
    }
}

Перегрузка конструкторов - несколько конструкторов

public class Book
{
    public string Title { get; set; }
    public string Author { get; set; }
    public int Pages { get; set; }
    
    // Конструктор с двумя параметрами
    public Book(string title, string author)
    {
        Title = title;
        Author = author;
        Pages = 0;
    }
    
    // Конструктор с тремя параметрами
    public Book(string title, string author, int pages)
    {
        Title = title;
        Author = author;
        Pages = pages;
    }
}

Цепочка конструкторов с использованием this

public class Book
{
    public string Title { get; set; }
    public string Author { get; set; }
    public int Pages { get; set; }
    
    // Основной конструктор
    public Book(string title, string author, int pages)
    {
        Title = title;
        Author = author;
        Pages = pages;
    }
    
    // Вызывает основной конструктор с количеством страниц по умолчанию
    public Book(string title, string author) : this(title, author, 0)
    {
    }
}

Создание объектов с использованием различных конструкторов

Book book1 = new Book("1984", "George Orwell");
Book book2 = new Book("Harry Potter", "J.K. Rowling", 500);

Конструкторы имеют то же имя, что и класс, и не имеют типа возвращаемого значения. Они запускаются автоматически при использовании ключевого слова new. Вы можете иметь несколько конструкторов с разными параметрами (перегрузка).

challenge icon

Задание

Средне

Создайте три конструктора для класса Product, используя перегрузку и цепочку конструкторов:

  • Конструктор с 3 параметрами: name, price и stock
  • Конструктор с 2 параметрами: name и price (stock по умолчанию равен 0)
  • Конструктор по умолчанию без параметров (name = "Unknown", price = 0, stock = 0)

Используйте цепочку конструкторов с this, чтобы избежать дублирования кода.

Шпаргалка

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

Конструкторы имеют то же имя, что и класс, и не имеют типа возвращаемого значения. Они запускаются автоматически при использовании ключевого слова new.

Конструктор по умолчанию без параметров:

public class Book
{
    public string Title { get; set; }
    
    public Book()
    {
        Title = "Unknown";
    }
}

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

public class Book
{
    public string Title { get; set; }
    public string Author { get; set; }
    
    public Book(string title, string author)
    {
        Title = title;
        Author = author;
    }
}

Перегрузка конструкторов — несколько конструкторов с разными параметрами:

public class Book
{
    public string Title { get; set; }
    public int Pages { get; set; }
    
    public Book(string title)
    {
        Title = title;
        Pages = 0;
    }
    
    public Book(string title, int pages)
    {
        Title = title;
        Pages = pages;
    }
}

Цепочка конструкторов с использованием this для предотвращения дублирования кода:

public class Book
{
    public string Title { get; set; }
    public int Pages { get; set; }
    
    public Book(string title, int pages)
    {
        Title = title;
        Pages = pages;
    }
    
    public Book(string title) : this(title, 0)
    {
    }
}

Создание объектов с использованием различных конструкторов:

Book book1 = new Book("1984", "George Orwell");
Book book2 = new Book("Harry Potter", "J.K. Rowling", 500);

Попробуйте сами

using System;

class Program
{
    static void Main()
    {
        string name = Console.ReadLine();
        decimal price = decimal.Parse(Console.ReadLine());
        int stock = int.Parse(Console.ReadLine());
        
        Product product1 = new Product(name, price, stock);
        Product product2 = new Product();
        Product product3 = new Product("Keyboard", 79.99m);
        
        Console.WriteLine($"Product 1: {product1.Name} - ${product1.Price} (Stock: {product1.Stock})");
        Console.WriteLine($"Product 2: {product2.Name} - ${product2.Price} (Stock: {product2.Stock})");
        Console.WriteLine($"Product 3: {product3.Name} - ${product3.Price} (Stock: {product3.Stock})");
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Объектно-ориентированное программирование