Sobes.tech
Back to questions
Junior — Middle
61

Какие основные отличия существуют между абстрактным и конкретным классами в объектно-ориентированном программировании?

Answer from AI

sobes.tech AI

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

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

Основные отличия:

  • Инстанцирование: Абстрактный класс нельзя создать напрямую, конкретный — можно.
  • Методы: Абстрактный класс может содержать абстрактные методы без реализации, конкретный класс — все методы реализованы.
  • Назначение: Абстрактный класс задаёт общий интерфейс и поведение для наследников, конкретный класс реализует конкретную логику.

Пример на C#:

abstract class Animal
{
    public abstract void MakeSound(); // абстрактный метод
}

class Dog : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("Bark");
    }
}

// Animal a = new Animal(); // Ошибка
Dog dog = new Dog();
dog.MakeSound(); // Выведет Bark