Sobes.tech
Junior — Middle

Czy można bezpośrednio w kodzie zainstancjonować klasę abstrakcyjną?

sobes.tech AI

Odpowiedź od AI

W C# nie można bezpośrednio tworzyć instancji klasy abstrakcyjnej. Wynika to z faktu, że klasa abstrakcyjna może zawierać abstrakcyjne metody bez implementacji, a kompilator nie pozwoli na utworzenie obiektu takiej klasy.

Aby korzystać z klasy abstrakcyjnej, należy utworzyć klasę pochodną, która zaimplementuje wszystkie abstrakcyjne metody, i tę klasę pochodną można już zainstancjonować.

Przykład:

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

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

// Błąd: nie można utworzyć obiektu klasy abstrakcyjnej
// Animal a = new Animal(); 

// Poprawnie:
Animal dog = new Dog();
dog.MakeSound(); // Wyświetli "Hau!"