Конструкторы
Часть раздела Объектно-ориентированное программирование путешествия по 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. Вы можете иметь несколько конструкторов с разными параметрами (перегрузка).
Задание
СреднеСоздайте три конструктора для класса 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})");
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Объектно-ориентированное программирование
1Основы ООП
Внешние файлыПространства имен и директивыВведение в классы и объектыКлючевое слово 'this'Методы и параметрыПоля и свойстваКонструкторыИнициализаторы объектовИтоги — Простой калькулятор4Наследование
Основы синтаксиса наследования (:)Ключевое слово 'base'Ключевые слова Virtual и OverrideЗапечатанные классыБазовый класс 'object'Итоги — Иерархия сотрудников7Продвинутые возможности
Перегрузка операторовИндексаторы (this[])Переопределение ToString()Методы расширенияПовторение — Пользовательский список10Паттерны проектирования. Часть 1
Введение в паттерны проектированияПотокобезопасный SingletonПаттерн FactoryПаттерн Observer (События)Паттерн Strategy13Финальные испытания
Платформа для онлайн-обученияКомпонент игрового персонажаСервис аренды транспорта2Свойства и статические члены
Автоматически реализуемые свойстваСвойства только для чтения и записиСтатические поля и методыСтатические классыЧлены в виде выражений5Полиморфизм и интерфейсы
Полиморфизм: компиляция vs выполнениеИнтерфейс vs абстрактный классМножественные интерфейсыЯвные интерфейсыUpcasting и DowncastingИтоги: Калькулятор фигур8Продвинутые концепции ООП
Композиция вместо наследованияGenerics (классы и методы)Делегаты и событияАтрибуты и рефлексияIDisposable и оператор usingОсновы Dependency Injection11Паттерны проектирования. Часть 2
Паттерн КомандаПаттерн АдаптерПаттерн ДекораторПаттерн Шаблонный методПаттерн СостояниеПаттерн Компоновщик3Архитектура классов
Экземплярные и статические данныеКлючевые слова 'readonly' и 'const'Опорные поляПовторение — Менеджер банковских счетов6Инкапсуляция
Модификаторы доступаСвойства для инкапсуляцииРеализация скрытия данныхПаттерны неизменяемостиИтоги — Записи студентов9Переменное количество аргументов
Ключевое слово 'params'Необязательные параметрыИменованные аргументыПерегрузка методов