Классы и объекты в C#

Классы и объекты в C#: как объявить класс, создать объект, задать поля, свойства и конструктор — основы ООП.

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

Первый класс

class Dog
{
    public string Name;   // поле
    public string Breed;
    public int Age;

    public void Bark()    // метод
    {
        Console.WriteLine($"{Name} говорит: Гав!");
    }
}

// Создание объектов
Dog dog1 = new Dog();
dog1.Name  = "Бобик";
dog1.Breed = "Лабрадор";
dog1.Age   = 3;

Dog dog2 = new Dog();
dog2.Name = "Шарик";

dog1.Bark();
dog2.Bark();

Вывод:

Бобик говорит: Гав!
Шарик говорит: Гав!

Свойства (get / set)

Свойства — умные поля: они контролируют чтение и запись значения. Стандартная практика в C# — закрыть поле как private и дать доступ через свойство:

class Person
{
    private int _age;  // приватное поле

    public int Age     // свойство
    {
        get { return _age; }
        set
        {
            if (value < 0) _age = 0;   // защита от отрицательного возраста
            else _age = value;
        }
    }

    // Автосвойство — когда проверка не нужна
    public string Name { get; set; }
}

var p = new Person();
p.Name = "Алиса";
p.Age  = -5;  // сработает проверка
Console.WriteLine($"{p.Name}, возраст: {p.Age}");

Вывод:

Алиса, возраст: 0

Конструктор

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

class Car
{
    public string Model { get; set; }
    public int Year { get; set; }

    // Конструктор
    public Car(string model, int year)
    {
        Model = model;
        Year  = year;
    }

    public void Info()
    {
        Console.WriteLine($"{Model} ({Year})");
    }
}

var car1 = new Car("Tesla Model 3", 2023);
var car2 = new Car("Lada Granta",   2021);
car1.Info();
car2.Info();

Вывод:

Tesla Model 3 (2023)
Lada Granta (2021)

Если вы не объявили конструктор, C# подставляет пустой конструктор по умолчанию. Как только вы объявили свой, конструктор по умолчанию исчезает — если нужны оба, добавьте второй явно.

Ключевое слово this

this ссылается на текущий объект. Помогает разрешить конфликт имён между параметром и полем:

class Point
{
    public double X { get; set; }
    public double Y { get; set; }

    public Point(double x, double y)
    {
        this.X = x;  // this.X — поле, x — параметр
        this.Y = y;
    }
}

Коротко

  • Класс — шаблон; объект — конкретный экземпляр, созданный через new.
  • Свойства (get/set) контролируют доступ к данным; автосвойства — краткая форма без поля.
  • Конструктор вызывается при new и задаёт начальное состояние объекта.
  • this ссылается на текущий объект — полезно при совпадении имён параметра и поля.
Проверьте себя
1. Что такое конструктор?
AМетод для уничтожения объекта
BСпециальный метод, вызываемый при создании объекта через new
CСтатический метод класса
DСвойство с get и set
2. Что делает автосвойство: public string Name { get; set; }?
AСоздаёт поле Name только для чтения
BСоздаёт свойство с приватным полем-хранилищем автоматически
CЭто синтаксическая ошибка
DСоздаёт статическое поле
3. Для чего используется this внутри класса?
AДля вызова базового класса
BДля ссылки на текущий экземпляр объекта
CДля объявления статического метода
DДля создания нового объекта

Закрепите практикой

Задачи с автоматической проверкой — решайте прямо здесь, не уходя из учебника.

Поддержать проект