0Pricing
C# Academy · Урок

Абстрактные классы

Изучите абстрактные классы и их роль в создании общей структуры для производных классов

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

Абстрактные классы

Абстрактные классы

Добро пожаловать в следующий урок! В этом уроке вы узнаете об абстрактных классах в C#, их назначении и отличиях от интерфейсов. Давайте начнём!

Абстрактные классы — иллюстрация 1

Что такое абстрактный класс?

Что такое абстрактный класс?

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

Ключевой момент: Абстрактные классы могут содержать как полностью реализованные методы, так и методы, только объявленные без реализации (абстрактные методы).

Определение абстрактного класса

Определение абстрактного класса

Чтобы определить абстрактный класс, используйте ключевое слово 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#. Продолжайте программировать!

Абстрактные классы — иллюстрация 10

Часто задаваемые вопросы

Урок «Абстрактные классы» бесплатный?

Да — полный текст урока «Абстрактные классы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 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 — локальная установка не требуется.

Все уроки этого курса

  1. Введение в интерфейсы
  2. Абстрактные классы
  3. Статические члены и методы
  4. Перечисления и структуры
  5. Делегаты и события
  6. Коллекции в C#: списки, словари и очереди
← Назад к C# Academy