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!"