Абстрактные классы
Изучите абстрактные классы и их роль в создании общей структуры для производных классов
«Абстрактные классы» — бесплатный урок C# Academy на CoddyKit. Это урок 2 из 6. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C# Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C# Academy содержит 6 уроков всего.
Абстрактные классы
Абстрактные классы
Добро пожаловать в следующий урок! В этом уроке вы узнаете об абстрактных классах в C#, их назначении и отличиях от интерфейсов. Давайте начнём!

Что такое абстрактный класс?
Что такое абстрактный класс?
Абстрактный класс — это класс, экземпляр которого нельзя создать напрямую. Он служит основой для других классов и может содержать абстрактные методы, которые должны реализовать производные классы.
Ключевой момент: Абстрактные классы могут содержать как полностью реализованные методы, так и методы, только объявленные без реализации (абстрактные методы).
Определение абстрактного класса
Определение абстрактного класса
Чтобы определить абстрактный класс, используйте ключевое слово abstract. Пример:
Совет: Используйте абстрактные классы как общую основу для связанных классов.
using System;
abstract class Animal {
public abstract void Speak(); // Abstract method
public void Sleep() { // Non-abstract method
Console.WriteLine("The animal is sleeping.");
}
}
Реализация абстрактного класса
Реализация абстрактного класса
Производные классы должны реализовать все абстрактные методы абстрактного класса. Пример:
Ключевой момент: Абстрактные методы определяют поведение, которое должны реализовать производные классы.
using System;
abstract class Animal {
public abstract void Speak(); // Abstract method
public void Sleep() {
Console.WriteLine("The animal is sleeping.");
}
}
class Dog : Animal {
public override void Speak() {
Console.WriteLine("The dog barks.");
}
}
class Program {
static void Main() {
Dog myDog = new Dog();
myDog.Speak(); // Outputs: The dog barks.
myDog.Sleep(); // Outputs: The animal is sleeping.
}
}
Абстрактные классы и интерфейсы
Абстрактные классы и интерфейсы
И абстрактные классы, и интерфейсы используются для абстракции, но между ними есть несколько отличий:
- Абстрактные классы могут содержать как реализованные, так и абстрактные методы, а интерфейсы — только абстрактные методы (до появления C# 8.0).
- Абстрактные классы могут содержать поля, конструкторы и модификаторы доступа для членов.
- Класс может наследоваться только от одного абстрактного класса, но реализовывать несколько интерфейсов.
Совет: Используйте абстрактные классы для тесно связанных классов, а интерфейсы — для более широкой абстракции.
Когда следует использовать абстрактные классы
Когда следует использовать абстрактные классы
Абстрактные классы лучше всего использовать в следующих случаях:
- Вы хотите определить общий базовый класс с общей функциональностью.
- Вам нужно включить неабстрактные методы, предоставляющие реализацию по умолчанию.
- Вы работаете со связанными классами, образующими общую иерархию.
Пример: абстрактный класс «Shape» для классов «Circle» и «Rectangle».
Практическое задание
Практическое задание
Создайте абстрактный класс Shape с абстрактным методом CalculateArea(). Реализуйте этот метод в производных классах Rectangle и Circle. Пример:
using System;
abstract class Shape {
public abstract double CalculateArea();
}
class Rectangle : Shape {
public double Width { get; set; }
public double Height { get; set; }
public override double CalculateArea() {
return Width * Height;
}
}
class Circle : Shape {
public double Radius { get; set; }
public override double CalculateArea() {
return Math.PI * Radius * Radius;
}
}
class Program {
static void Main() {
Shape rectangle = new Rectangle { Width = 5, Height = 4 };
Shape circle = new Circle { Radius = 3 };
Console.WriteLine("Rectangle Area: " + rectangle.CalculateArea());
Console.WriteLine("Circle Area: " + circle.CalculateArea());
}
}
Рекомендации по абстрактным классам
Рекомендации по абстрактным классам
Вот несколько рекомендаций:
- Используйте абстрактные классы, если у вас есть общая функциональность, которую необходимо унаследовать.
- Сохраняйте абстрактный класс целенаправленным и не добавляйте в него ненужные члены.
- При необходимости сочетайте абстрактные классы с интерфейсами.
Совет: Абстрактные классы должны служить надёжной основой для производных классов.
Отличная работа!
Отличная работа!
Поздравляем! Вы научились использовать абстрактные классы для определения общего поведения и обеспечения согласованности производных классов. В следующем уроке мы рассмотрим статические члены и методы в C#. Продолжайте программировать!

Часто задаваемые вопросы
Урок «Абстрактные классы» бесплатный?
Да — полный текст урока «Абстрактные классы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C# Academy, подпишись на CoddyKit PRO. Курс C# Academy содержит 6 уроков всего.
Чему я научусь в уроке «Абстрактные классы»?
Изучите абстрактные классы и их роль в создании общей структуры для производных классов Ты практикуешь C# Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C# Academy?
Предыдущий опыт не требуется. C# Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 6.
Сколько времени занимает урок «Абстрактные классы»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C# Academy?
Да. Каждый урок C# Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Введение в интерфейсы
- Абстрактные классы
- Статические члены и методы
- Перечисления и структуры
- Делегаты и события
- Коллекции в C#: списки, словари и очереди