Sobes.tech
Back to questions
Junior — Middle
69

Можно ли инстанцировать абстрактный класс непосредственно в коде?

Answer from AI

sobes.tech AI

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

Для использования абстрактного класса нужно создать производный класс, который реализует все абстрактные методы, и уже этот производный класс можно инстанцировать.

Пример:

abstract class Animal
{
    public abstract void MakeSound();
}

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

// Ошибка: нельзя создать объект абстрактного класса
// Animal a = new Animal(); 

// Правильно:
Animal dog = new Dog();
dog.MakeSound(); // Выведет "Woof!"