Can We have Constructor in Abstract Class

Yes, an abstract class can have a constructor, and it can be used to initialize fields or perform other initialization tasks when a derived class is instantiated.

Here's an example of an abstract class with a constructor:

public abstract class Animal
{
    protected string name;

    public Animal(string name)
    {
        this.name = name;
    }

    public abstract void MakeSound();
}

In the above example, the Animal class is an abstract class that has a constructor that takes a name parameter. The constructor initializes the name field. The class also defines an abstract MakeSound() method.

When a derived class is instantiated, its constructor will call the constructor of the abstract class using the base keyword:

public class Dog : Animal
{
    public Dog(string name) : base(name)
    {
    }

    public override void MakeSound()
    {
        Console.WriteLine("Dog barks.");
    }
}
In the above example, the Dog class derives from the Animal class and provides its own implementation for the MakeSound() method. The Dog class also has a constructor that takes a name parameter, which is passed to the constructor of the Animal class using the base keyword.

In summary, an abstract class can have a constructor, and it can be used to initialize fields or perform other initialization tasks when a derived class is instantiated.