Sobes.tech
Junior — Middle

É possível instanciar uma classe abstrata diretamente no código?

sobes.tech IA

Resposta da IA

Em C# não é possível instanciar diretamente uma classe abstrata. Isto deve-se ao facto de uma classe abstrata poder conter métodos abstratos sem implementação, e o compilador não permitirá criar um objeto dessa classe.

Para usar uma classe abstrata, é necessário criar uma classe derivada que implemente todos os métodos abstratos, e essa classe derivada pode então ser instanciada.

Exemplo:

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

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

// Erro: não é possível criar um objeto de uma classe abstrata
// Animal a = new Animal(); 

// Correto:
Animal dog = new Dog();
dog.MakeSound(); // Vai mostrar "Au au!"